我刚开始学习Python.我发现类型系统有点难以理解.我有很多问题,但主要是长话短说; 该文件规定:
"Python程序中的所有数据都由对象表示......每个对象都有一个标识,一个类型和一个值."
没问题.但除此之外,它并没有真正描述"对象" 是什么.例如,文档甚至不包括这些"物"支持点操作-从我的POV他们可能是一些在内存中的数据结构不暴露给用户超越id(),type()等等.但是我收集有类似的一些潜在元对象接口为描述文档中的类实例类型对象.从一个例子开始工作:
如果我在类实例"x"上执行此操作:
x.__class__.__name__
Run Code Online (Sandbox Code Playgroud)
我得到了它的类名.我明白那个.该文档描述的__class__和__name__的特性类实例和类型的对象.如果我这样做,[].__class__.__name__我会得到"列表".同样int(1).__class__.__name__给出"int".它对我来说是模棱两可的,我想澄清一下.所以我的问题是:
我先回答1,2问题,然后是第4个问题,然后是第3个问题:
它们是相同的,是的,它们共享一个通用的API.当文档将内置类型描述为"对象",或者将类实例描述为"对象",或者将类或任何内容描述为"对象"时......它们正在讨论完全相同的语言结构.
该对象是Python中的基础语言特性,与其他OOPL一样,支持属性和行为.所有Python对象都有一个类很像其他基于类的OOPL.该object班是在Python的类层次结构的基础.因此,所有类都是类的子object类,以及所有上述"对象"和实例object- 通过继承.
值得首先明确指出,在Python(2.2及以上版本)中,"类型"和"类" 意味着相同的事情(出于所有密集目的).所以"int"和其他所谓的内置类型都是类(当然它们表示为对象).例如,这会x = int(1)调用int类(对象)来构造一个int实例对象x.
诚然,Python中有两种类型的对象; "类型"对象,或表示类型的对象,以及"非类型"对象 - 那些不对象.但同样可以说有两种类型的整数; 零,而不是零.它并不重要:Python中的所有内容都是包含类的对象.由于类形成一个类对象,因此它们都是名为"type"的类的实例.type对象也是type的实例.请注意,您可以通过检查类对象的__bases__属性来检查类的继承层次结构.在所有情况下,它都会回到object课堂上 - 当然.有关详细信息,请参阅http://www.cafepy.com/article/python_types_and_objects/python_types_and_objects.html.
嗯,这实际上是个好问题.它应该在语言参考的数据模型部分中介绍,但它有点被撇去.对象对象(有意义)的构造函数是内置的,并在此处记录了其余的内置函数.另外,班章的Python的教程也包括这方面一点.