我正在尝试将一些 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__']
此外,properties 和 super 不适用于经典类。
在 Python2 中,让所有类都成为新式类是个好主意。 (尽管标准库中的很多类仍然是经典类,为了向后兼容。)
一般来说,在诸如
class Foo(Base1, Base2):
Foo
被声明为继承自基类 Base1
和 Base2
的类。object
是 Python 中所有类的母亲。它是一个新式类,因此从 object
继承使 Table
成为一个新式类。关于python - 以对象为参数的类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7375595/