不同类型命名之间的区别

时间:2018-02-26 07:21:42

标签: python python-3.x class

两个类命名约定之间有什么区别,两者都会产生相同的输出?

class class_name:
    def func():
        print('1st class')


class class_name():
    def func():
        print('2nd class')

1 个答案:

答案 0 :(得分:1)

这是新类语法vs旧类语法

来自Python's wiki:

  

“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'>)

你明确必须从对象中获得;没有默认继承。