Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中获取对象的属性_Python_Python 3.x_Reflection - Fatal编程技术网

如何在python中获取对象的属性

如何在python中获取对象的属性,python,python-3.x,reflection,Python,Python 3.x,Reflection,我知道getattr,hasattr…可以访问该属性。 但是为什么不使用iteratr或listtr ClassB对象的预期结果: class ClassB: def __init__(self): self.b = "b" self.__b = "__b" @property def propertyB(self): return "B" ClassBclasse的预期结果: {'propertyB': 'B'} 谢

我知道
getattr,hasattr…
可以访问该属性。 但是为什么不使用
iteratr
listtr

ClassB
对象的预期结果:

class ClassB:
    def __init__(self):
        self.b = "b"
        self.__b = "__b"

    @property
    def propertyB(self):
        return "B"
ClassB
classe的预期结果:

{'propertyB': 'B'}
谢谢@juanpa.arrivillaga的评论。
vars(obj)
vars(obj.\uuuuu class\uuuu)
是不同的

使用内置的,如下所示:

['propertyB']
使用列表理解:

>[k表示k,v表示变量(ClassB).items(),如果类型(v)是属性]
['propertyB']

要列出python类的属性,可以使用\uuu dict\uuu

范例

properties = []
for k,v in vars(ClassB).items():
    if type(v) is property:
        properties.append(k)

有关更多示例和信息,请参见此链接-

要获取对象的属性,请使用
vars(obj)
。请注意,
property
对象属于类而不是实例,请注意,您的
property
不知道它将始终返回
B
@juanpa.arrivillaga如果我知道属性的名称,我可以通过
getattr
获取值,如果您的属性返回
random.random()
?@juanpa.arrivillaga在这种情况下,我认为该值应与
getattr(b_object,'randomProperty')
相同。
>>> class C(object):
x = 4

>>> c = C()
>>> c.y = 5
>>> c.__dict__
{'y': 5}