以 Object 作为参数初始化

我正在尝试将一些 Python 代码翻译成 scala 代码,所以我在 Python 方面完全是个菜鸟。

但是,为什么有些类有对象作为参数,却从来不显式地使用它呢?一开始把它作为参数的原因是什么?

例如:

class Table(object)

打扰了。

94861 次浏览

Table类正在扩展一个名为 object的类。这不是争论。您可能想要显式扩展 object的原因是它将类转换为一个新样式的类。如果您没有显式地指定它扩展了 object,那么在 Python 3之前,它将默认为一个旧式类。(自 Python3以来,所有类都是新样式的,无论是否显式扩展 object。)

有关新式和旧式课程的更多信息,请参阅 看到这个问题

类 Table 和类 Table (对象)对于 Python 没有什么不同。

它不是一个参数,而是从对象(像许多其他语言一样是基类)扩展而来的。

它只是说它继承了“ object”中定义的任何东西,这是默认行为。

在 Python 2中,它将 Table声明为 新式班级(与“经典”类相反)。 在 Python 3中,所有类都是新样式的类,因此不再需要这样做。

新样式类有一些经典类所缺乏的特殊属性。

class Classic: pass
class NewStyle(object): pass


print(dir(Classic))
# ['__doc__', '__module__']


print(dir(NewStyle))
# ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']

此外,物业好极了不与经典类工作。

在 Python 2中,让所有类都成为新样式的类是一个好主意。(尽管为了向后兼容,标准库中的许多类仍然是经典类。)

一般来说,在诸如

class Foo(Base1, Base2):

Foo被声明为从基类 Base1Base2继承的类。

object是 Python 中所有类的鼻祖。它是一个新样式的类,因此从 object继承使得 Table成为一个新样式的类。

请注意,“新样式”与“旧样式”类的区别是特定于 Python2的。在3.x 中,所有类都是“ new-style”。

1)类名(对象) : 2)类名: 它们都是相同的,但是第一个在写作方面更好,它看起来更好,而继承其他类到另一个,它看起来同质。

怎么一样? 因此,Python 中的每件事物都在 object 之下,这意味着 Python 中的每件事物都具有 object 的属性,无论它是否写入,它都会理解它。 一开始我们明确地告诉它,第二次我们没有。

Object 是在 python 中定义的最基本的类对象类型。 对象的属性如下所示

* * > > dir (object)

[‘ 同学们’,‘ Delattr’,‘ 医生’,‘ 格式’,‘ 获得属性’,‘ 大麻’,‘ Init’,‘ 新的’,‘ 减少’,‘ Reduce _ ex’,‘ Delattr0’,‘ Delattr1’,‘ Delattr2’,‘ Delattr3’,‘ Delattr4’] * *

因此 Table (对象)只是继承!