class MyClass:
pass
obj = MyClass()
class_dict_attr = type(obj).dict['dict'] # 获取类中的 dict 属性对象
为什么用type(obj).dict['dict']中的type(obj),而不是Myclass,type(obj)就是Myclass吧
在 Python 中,type(obj)
和直接使用 MyClass
本质上是相同的,因为 type(obj)
返回的就是对象 obj
所属的类(即 MyClass
)。以下详细解释两者的关系以及为何代码中常用 type(obj)
:
type(obj)
与 MyClass
等价print(type(obj) is MyClass) # 输出 True
二者指向同一个类对象。
type(obj)
而非 MyClass
虽然结果相同,但使用 type(obj)
有以下优势:
MyClass
)。若类名改变或需要处理未知类的对象,type(obj)
自动适应。obj
是子类实例,type(obj)
准确返回实际类(而非基类)。__dict__
的原因代码 type(obj).__dict__['__dict__']
的目的是:
__dict__
属性对象(一个描述符)。__dict__
行为(存储实例属性)。结论:使用 type(obj)
是为了编写更通用、动态的代码,避免硬编码类名。在您的场景中,二者结果一致,但 type(obj)
是更灵活的选择。