以Object作为参数的类
我试图将一些python代码翻译为scala代码。 所以我是一个Python的总noobot。
但为什么一些类有对象作为参数,但从来没有明确使用它? 首先把它作为参数的理由是什么?
例:
class Table(object)
感谢您的时间。
在Python2中,这个Table
将Table
声明为一个新的类 (与“经典”类相对)。 在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__']
此外, 属性和超级不适用于经典类。
在Python2中,创build所有类的新样式类是一个好主意。 (尽pipe为了向后兼容,标准库中的很多类仍然是经典类。)
一般来说,在诸如
class Foo(Base1, Base2):
Foo
被声明为从基类Base1
和Base2
inheritance的类。
object
是Python中所有类的母亲。 它是一种新型的类,所以从object
inheritance使得Table
成为一种新型的类。
Table
类扩展了一个名为object
的类。 这不是一个争论。 你可能想明确地扩展object
的原因是它把类变成一个新风格的类。 如果你没有明确指定它的扩展object
,那么在Python 3之前,它将默认为一个旧式的类。 (从Python 3开始,所有的类都是新的types,不pipe你是否明确地扩展object
。)
有关新式和旧式课程的更多信息,请参阅此问题 。
类表和类表(对象)对Python没有什么不同。
它不是一个参数,它是从对象(它是许多其他语言的基类)中扩展而来的。
它所说的只是它inheritance了“对象”中定义的任何东西。 这是默认行为。
只需要注意“新风格”与“旧风格”类的区别是Python 2.x特有的;在3.x中,所有类都是“新风格”。
1)类名(对象):2)类名:它们都是相同的,但是在写作方面,它们是相同的,在将其他类inheritance到另一个类时看起来更好,它看起来是同质的。
如何相同? 所以,Python中的每一件事情都是在对象之下的,意味着Python中的每一件事物都具有对象的属性,如果写或者不理解的话。 首先,我们明确地告诉它,我们没有。