我正在尝试将一些 python 代码转换为 Scala 代码。所以我完全是 Python 的菜鸟。

但是为什么有些类有对象作为参数却从不显式使用它呢?首先将其作为参数的原因是什么?

例子:

class Table(object)

感谢您的时间。

最佳答案

在 Python2 中,这将 Table 声明为 new-style class(与“经典”类相反)。
在 Python3 中,所有类都是新式类,因此不再需要这样做。

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

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__']

此外,propertiessuper 不适用于经典类。

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

一般来说,在诸如
class Foo(Base1, Base2):
Foo 被声明为继承自基类 Base1Base2 的类。
object 是 Python 中所有类的母亲。它是一个新式类,因此从 object 继承使 Table 成为一个新式类。

关于python - 以对象为参数的类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7375595/

10-12 17:28