类的对象和实例之间的区别

2024-09-27 20:17:34 发布

您现在位置:Python中文网/ 问答频道 /正文

这两者有什么区别:

class ThisIsAClass(object)
    pass

print ThisIsAClass()
>> <__main__.ThisIsAClass object at 0x7f0128a8fd10>

这个呢?在

^{pr2}$

Tags: objectmainpassatclassprint区别pr2
3条回答

声明的类型不同。新样式类继承自对象或其他新样式类。在

class NewStyleClass(object):
    pass

class AnotherNewStyleClass(NewStyleClass):
    pass

旧式的课堂就没有了

^{pr2}$

好吧,新样式类继承自object或其他新样式类。在

在Python2.1之前,旧样式的类是用户唯一可用的风格。(旧样式)类的概念与类型的概念无关:如果x是旧样式类的实例,则x.__class__指定{}的类,但是{}总是{}。这反映了这样一个事实:所有旧样式的实例,独立于它们的类,都是用一个称为instance的内置类型实现的。在

Python2.2引入了新的样式类来统一类和类型。一个新样式的类,既不多于也不少于用户定义的类型。如果x是新样式类的实例,那么type(x)与{}相同。在

引入新类型类的主要动机是提供一个具有完整元模型的统一对象模型。在

出于兼容性的原因,默认情况下类仍然是旧样式。在

Python3只有新样式的类。在

object继承的一个使用new-style类,而另一个使用旧样式的类。许多日常用户不会注意到差异,但在多重继承和您可以使用哪种漂亮的装饰器方面有很大的不同。e、 g.property只能用于新样式的类。在

最近有人建议你使用新样式的类,所以我发现总是从对象继承是一个好习惯,除非你真的有充分的理由避免它。还请注意,如果您曾经切换到python3.x,那么您的所有类都将自动成为新样式,因此最好现在就习惯它们:)。在

第一个是新样式的类,第二个是旧样式的类。请参阅the documentation了解它们的区别。在

相关问题 更多 >

    热门问题