python - 如何在python中获取对象的属性
问题描述
class ClassB:
def __init__(self):
self.b = "b"
self.__b = "__b"
@property
def propertyB(self):
return "B"
我知道getattr,hasattr...
可以访问该属性。但是为什么没有iterattr
or listattr
?
期望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']
推荐阅读
- java - 与java同时调用具有IN OUT SYS_REFCURSOR参数的oracle存储过程
- excel - 制作按难度排序的自动更新目标列表
- c# - 旧生成的玩家无法更新新生成的玩家的位置,但新生成的玩家可以跟踪旧生成的玩家的更新位置
- heroku - Heroku 上 MeteorJS 的高响应时间
- wordpress - 自定义帖子类型 slug 重复
- git - 现在在 Github 中删除我的 SSH 密钥需要我输入用户名和密码吗?
- php - Laravel/Php - 使用 Eloquent ORM 调用嵌套模型
- python - IndexError:列表索引超出范围,但索引存在
- logging - Logback @Sl4j Lombok 在默认类的情况下传递附加程序名称
- python - 使用字典和 numpy 优化将数组映射到值的执行时间