【问题标题】:What's the difference between declaring `class A` and `class A()`? [duplicate]声明 `class A` 和 `class A()` 有什么区别? [复制]
【发布时间】:2019-09-19 16:08:51
【问题描述】:
我们在python中定义类如下:
class A:
def x(self):
print("In x")
但我只是打错了字,它在 python 3.7 版的 linux cli 中成功执行。这里是:
class A():
def x(self):
print("In x")
这是什么意思???
【问题讨论】:
标签:
python
python-3.x
class
【解决方案1】:
您可以选择使用 Python 中的 class Child(Parent): 语法 inherit from other classes。在括号中不保留任何参数与不保留括号相同:您只需从基类 object 继承,仅此而已。例如:
class A:
pass
class B(object):
pass
class C():
pass
import inspect
inspect.getmro(A)
# (__main__.A, object)
inspect.getmro(B)
# (__main__.B, object)
inspect.getmro(C)
# (__main__.C, object)
所有等价物。举个反例:
class D(A): # inherit from A
pass
inspect.getmro(D) # should include A now
# (__main__.D, __main__.A, object)
【解决方案2】:
在python 2.x中会有区别,但在python3中是一样的。
长版
A类(对象):
通过
与
A类():
通过
因为对象是类的默认输入
这个只是上面那个的一个更短的版本
A类:
通过