【问题标题】:How to get python class instance variables inside __init__?如何在__init__中获取python类实例变量?
【发布时间】:2019-04-11 09:41:20
【问题描述】:

我想知道是否有办法获取 init 中的类实例变量。

除了我正在寻找一种获取实例变量而不是类变量的方法之外,我已经看到了一些验证接近我正在寻找的东西。 链接主题:Looping over class variable's attributes in python

假设我有一门课,例如:

class Identity:
    table = "tb_identity"
    def __init__(self, id="", app_name="", app_code="", state="", criticality=""):
        self.id = id
        self.app_name = trigram_name
        self.app_code = trigram_irt
        self.state = state
        self.criticality = criticality

我希望能够获得带有实例变量名称的列表,例如:

["id","app_name","app_code","state","criticality"]

例如:

members = [getattr(Identity,attr) for attr in dir(Identity) if not attr.startswith("__")]

我只得到“tb_identity”,甚至没有得到“table”。 但这不是主要问题,我正在寻找类似的东西:

["id","app_name","app_code","state","criticality"]

是否有任何适当的方法可以在 init 中获取这些变量?

感谢您的宝贵时间。

编辑:没有实例化的任何方式吗?

【问题讨论】:

标签: python class variables instance-variables attr


【解决方案1】:

试试

class Identity:
    table = "tb_identity"
    def __init__(self, id="", app_name="", app_code="", state="", criticality=""):
        self.id = id
        self.app_name = 'trigram_name'
        self.app_code = 'trigram_irt'
        self.state = state
        self.criticality = criticality
        print(self.__dict__.keys())

i = Identity()

输出

dict_keys(['id', 'app_name', 'app_code', 'state', 'criticality'])

【讨论】:

  • 虽然这确实有效,但它也可能返回动态添加到实例中的方法。并不是真的有更好的方法,只是需要注意的问题。 :-)
猜你喜欢
  • 2021-03-28
  • 2010-09-11
  • 2022-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-06
  • 1970-01-01
相关资源
最近更新 更多