【问题标题】: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类: 通过

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多