两个类命名约定之间有什么区别,两者都会产生相同的输出?
class class_name:
def func():
print('1st class')
class class_name():
def func():
print('2nd class')
答案 0 :(得分:1)
这是新类语法vs旧类语法
“New Class”是在现代Python中创建类的推荐方法。
“经典类”或“旧式类”是Python 2.1及之前存在的类。保留它们是为了向后兼容。此页面尝试列出差异。
两种类型的语法看起来相同; “新风格”,“旧风格”,“经典风格”和变体只是各种人所使用的描述; Python尚未确定术语的特定官方选择。
轻微的句法区别是New Style Classes恰好从object继承。
关于@Felix问题,请考虑以下事项:
class A: pass
class B(): pass
class C(object): pass
print A.__mro__
Traceback (most recent call last):
File "<pyshell#19>", line 1, in <module>
A.__mro__
AttributeError: class A has no attribute '__mro__'
print B.__mro__
Traceback (most recent call last):
File "<pyshell#18>", line 1, in <module>
B.__mro__
AttributeError: class B has no attribute '__mro__'
print C.__mro__
(<class '__main__.C'>, <type 'object'>)
你明确必须从对象中获得;没有默认继承。