python metaclass,type class and the object class
我有点头疼,想弄清楚
我试图理解python是如何将所有东西都变成一个对象的,是因为所有东西都是元类类型的一个实例,还是因为所有东西都是对象类的一个子类。
如果它是因为对象类的子类,这是否意味着类对象是命名为类
我知道元类创建的对象是类型/类,然后这些类型用于创建其他对象。
从这里:
1 2 3 4 5 6 7 8 | >>> isinstance(type, object) True >>> isinstance(object,type) True >>> issubclass(object,type) False >>> issubclass(type,object) True |
是否可以安全地说,python首先使用类型元类创建类对象(为了简洁起见,我正在简化元类)。
1 | type('object',(),{}) |
号
这意味着类对象是类类型的类,它不继承其他类的任何属性。
然后创建类类型:
1 | type('type', (object,),{}) |
暗示类型类是类类型的类,它从对象类继承属性。
然后通过从类对象继承来创建其他类
1 2 | type('dict', (object,), {}) type('Animal', (object), {}) |
。
类似于创建一个动物类:
1 2 | class Animal: pass |
这是否意味着用于创建类对象的元类仍然是用于创建该动物类的元类,还是默认情况下使用的元类类型?
使用的类型是元类类型还是创建对象后创建的类型类?
用基类对象创建的类类型在哪里起作用?
我还试图从上面和本文http://www.cafepy.com/article/python_types_and_objects/python_types_and_objects.html中了解对象和类之间的实际情况。
我还是很困惑。在对象创建方面,这两个类之间的关系是什么?
我会得到这个还是鸡蛋和鸡的情况?
Python的核心类型确实有鸡和蛋的情况。
您不能真正解释在python中首先定义哪个
在您调用
下面是一个解释程序大致如何处理的例子。代码实际上不起作用,因为没有从
1 2 3 | my_object = type('my_object', (), {}) # this doesn't work right, it inherits from object my_type = type('my_type', (my_object,), {}) my_object.__class__ = my_type # this doesn't work at all (it will raise an exception) |