定义在对象中是否有括号的类有什么区别吗?

Yu *_*ong 0 python class python-3.x

我是 Python 编程的新手,我对定义类有疑问。类在对象内有括号会有什么区别吗?

class MyFunction:
      def Method1(self):
          print('Hello World!')
Run Code Online (Sandbox Code Playgroud)

或者

class MyFunction(object):
      def Method1(self):
          print('Hello World!')
Run Code Online (Sandbox Code Playgroud)

谢谢。

aba*_*ert 5

如教程中的继承中所述,这:

class DerivedClassName(BaseClassName):
Run Code Online (Sandbox Code Playgroud)

... 使DeriveClassName继承自BaseClassName.

您可以从 1 个类、2 个类或 20 个类继承:

class Silly(Spam, Eggs, Cheese, Beans, Toast, Ham):
Run Code Online (Sandbox Code Playgroud)

但是你不能从任何类继承。您可以编写class没有基类名称的语句,但这意味着您是从通用基类object.

因此,所有这三个都是相同的:

class Derived: pass
class Derived(): pass
class Derived(object): pass
Run Code Online (Sandbox Code Playgroud)

(然而,这仅适用于 Python 3.0 及更高版本。在 2.x 中,前两个实际上创建了一个“旧式”或“经典”类,而不是一个普通类。)


如果你查看你的类dirinspect模块,你会发现它有一大堆你没有在任何地方定义的东西——一个__repr__方法、一个__module__字符串等等。其中一些是由class语句自动填充的,但大多数是从`object.