列出对象的属性

有没有办法获取类实例上存在的属性的列表?


class new_class():

    def __init__(self, number):

        self.multi = int(number) * 2

        self.str = str(number)


a = new_class(2)

print(', '.join(a.SOMETHING))

期望的结果是将输出“ multi,str”。我希望它可以查看脚本各个部分的当前属性。


浮云间
浏览 354回答 3
3回答

守着一只汪

>>> class new_class():...   def __init__(self, number):...     self.multi = int(number) * 2...     self.str = str(number)... >>> a = new_class(2)>>> a.__dict__{'multi': 4, 'str': '2'}>>> a.__dict__.keys()dict_keys(['multi', 'str'])您可能还会发现pprint有帮助。

胡说叔叔

dir(instance)# or (same value)instance.__dir__()# orinstance.__dict__然后,您可以测试的类型type()或的方法callable()。

慕姐8265434

该检查模块提供了简便的方法来检查的对象:检查模块提供了几个有用的功能,以帮助获取有关活动对象的信息,例如模块,类,方法,函数,回溯,框架对象和代码对象。使用,getmembers()您可以查看类的所有属性及其值。要排除私有或受保护的属性,请使用.startswith('_')。要排除方法或功能,请使用inspect.ismethod()或inspect.isfunction()。import inspectclass NewClass(object):    def __init__(self, number):        self.multi = int(number) * 2        self.str = str(number)    def func_1(self):        passa = NewClass(2)for i in inspect.getmembers(a):    # Ignores anything starting with underscore     # (that is, private and protected attributes)    if not i[0].startswith('_'):        # Ignores methods        if not inspect.ismethod(i[1]):            print(i)请注意,由于第一个ismethod()元素i只是一个字符串(其名称),因此在的第二个元素上使用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python