【发布时间】:2015-08-14 09:58:51
【问题描述】:
我很难理解metaclass 类型、object 类和class 类型之间存在的循环关系。
我试图理解 python 是如何将所有东西都变成对象的。是因为所有东西都是元类类型的实例,还是因为所有东西都是对象类的子类。
如果它是对象类的子类,这是否意味着类对象被命名为类pyobj。这是否意味着 Python 中的一切都以 pyobj 开头?
我知道元类创建的对象是类型/类,然后使用这些类型创建其他对象。
从这里:
>>> isinstance(type, object)
True
>>> isinstance(object,type)
True
>>> issubclass(object,type)
False
>>> issubclass(type,object)
True
可以肯定地说python首先使用元类类型创建类对象(为简洁起见,我正在简化元类)。
type('object',(),{})
这意味着类对象是一个类类型的类,它不继承其他类的任何属性。
然后它创建类类型:
type('type', (object,),{})
暗示类型类是类类型的类,它继承了对象类的属性。
然后通过继承类对象来创建其他类
type('dict', (object,), {})
type('Animal', (object), {})
这类似于创建一个 Animal 类:
class Animal:
pass
这是否意味着用于创建类对象的元类仍然是用于创建此 Animal 类的元类,还是默认使用的元类类型?
使用的是哪种类型,是元类类型还是对象创建后创建的类型类?
使用基类对象创建的类类型在哪里发挥作用?
我还试图从他上面的所有回复以及本文http://www.cafepy.com/article/python_types_and_objects/python_types_and_objects.html中的所有回复中了解对象和类之间到底发生了什么@
我仍然感到困惑。这两个类在对象创建方面是什么关系?
我会得到这个还是先有鸡还是先有蛋?
【问题讨论】:
-
您是否阅读了语言参考的3.3.3. Customizing class creation?
标签: python object inheritance typeclass metaclass