我在Python的REPL中尝试过:
>>> class Foo:
... def f():{}
...
>>>
>>> type(Foo)
<type 'classobj'>
>>> Foo.__bases__
()
>>> type(type(Foo))
<type 'type'>
>>> type(Foo).__bases__
(<type 'object'>,)
然而,我仍然不能确切地理解OOP中的“数据类型”是什么意思。在
在Python中,我知道一个实例可以通过.__class__
获得它的类,而一个类可以通过.__bases__
获得其父类。这似乎很容易理解。在
但是“类”的type
或TypeObject
是什么意思呢?a的type
是什么意思?a的__bases__
是什么意思?Python中的type
和{
我觉得这有点困惑。。有人对此有什么想法吗?在
理解的关键是认识到python中的一切都是一个对象。而且,从技术上讲,
object
不是一个关键字,而是一个全局内置的。在This answer is perhaps the best explanation I've ever seen on the topic.我强烈建议阅读整篇文章。它讨论了很多关于元类的内容,并且
type
与元类非常相关。在本质上,类的类型是元类。与python中所有新样式类从
object
继承的方式相同,所有元类都从type
继承。这有点令人困惑,因为python中的type
全局用于两个不同的目的。它是一个元类和一个返回对象类型的函数。在一个非常简单的方法是元类创建类,就像类创建实例一样。在
在python中类是对象,即类是“与其他类一样的东西” 在你的例子中
你定义的类不仅仅是一段代码。它是一个占用内存空间的物体。在
^{pr2}$是有效的操作。在
类型是一种特殊的类(metaclass) 它的对象是可以创建对象的类
相关问题 更多 >
编程相关推荐