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

标签 python python-3.x reflection

<分区>

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

    @property
    def propertyB(self):
        return "B"

我知道 getattr,hasattr... 可以访问该属性。 但是为什么没有 iterattrlistattr 呢?

ClassB 对象的预期结果:

{'propertyB': 'B'}

期望 ClassB 类的结果:

['propertyB']

感谢@juanpa.arrivillaga 的评论。 vars(obj)vars(obj.__class__) 是不一样的!

最佳答案

使用内置的 vars如下:

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

使用列表理解:

>>> [k for k,v in vars(ClassB).items() if type(v) is property]
['propertyB']

关于python - 如何在python中获取对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58177258/

相关文章:

java - 如何在 Java 7 中使用默认访问修饰符访问构造函数

python - 为什么 post_save 在 Django 模型保存期间被提升两次?

python - 使用 pandas 查找另一个 df 中一行的所有单元格,如果全部存在则返回标志

python - 当 N 大于组数时 nlargest(N) 的行为?

python - 按照 python3 的顺序移动字典中的键

python-3.x - ImportError 与 from 。在简单的 python 文件上导入 x

python - 转换为非夏令时时区

python - 使用 python 使用 Active Directory 密码连接 Azure SQL Server 数据库(出现错误)

Java - 从反射调用的构造函数中捕获异常

objective-c - 使用属性名称动态访问 Objective-C 属性