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) 是更灵活的选择。