python-3.x - Python3:如何列出对象的类和实例属性?
问题描述
如何将类对象的属性和值打印到标准输出?我已经阅读了这个答案,但它 [大部分] 没用,因为__dict__
Python 3 中不存在该方法。
并且vars
也不返回类属性。
我可以在网上找到的解决方案似乎是使用检查标准库。但这在将类对象注入函数时很棒。例如:
def get_class_obj_attrs(obj):
return inspect.getmembers(obj)
但我想要一个可以返回属性的类对象的方法。我想出了这个作为解决方案:
class MyClass:
attr_1 = 0
def __init__(self, x):
self.attr_2 = x
def __getattrs__(self):
attrs = [i[0] for i in inspect.getmembers(self) if not i[0].startswith("_") and
not inspect.ismethod(i[1])]
return attrs
def __repr__(self):
return f"MyClass: { {attr: self.__getattribute__(attr) for attr in self.__getattrs__()} }"
所以这可以像这样使用:
my_class = MyClass()
print(my_class)
--> "MyClass: {'attr_1': 0, 'attr_2': 'foo'}"
该__getattrs__
方法(不要与默认方法混淆__getattr__
)依赖于一个库来运行,所以它并不理想(即使它是标准库)。
什么是正确的 Python3 方式来做到这一点,而不必跳过箍?肯定有内置的方法吗?
解决方案
推荐阅读
- simd - GraalVM 是否完全支持 SIMD / AutoVectorization 或与 jdk9+ 一样?
- java - grafana 中的“t.data.data 未定义”
- spring - 使用 Spring Boot 对 mongoDB 进行身份验证失败
- mysql - Cpanel 上的 Express/NodeJS 应用程序
- postgresql - PostgreSQL:如何在脚本中获取和设置枚举列表变量?
- ansible - 稳定 | 同步 |
- php - 如何确保对我的服务器的请求的来源是合法的?
- javascript - 如何在 GitHub Pages 中使用基本的 Google Sheets javascript 脚本?
- android-studio - Android 启动,然后进入黑屏。亚行外壳工程
- java - 在 Java 中使用 PDFBox 创建嵌套列表