问题:以Object为参数的类
我正在尝试将一些python代码转换为scala代码。所以我对Python完全陌生。
但是,为什么有些类将对象作为参数却从未明确使用它呢?首先将其作为参数的原因是什么?
例:
class Table(object)
感谢您的时间。
回答 0
在Python2中,此方法声明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中,最好将所有类都设为新样式。(尽管为了向后兼容,标准库中的许多类仍然是经典类。)
通常,在诸如
class Foo(Base1, Base2):
Foo
被声明为从基类Base1
和继承的类Base2
。
object
是Python所有类的母亲。它是一种新型的类,从这么继承object
品牌Table
新风格的类。
回答 1
该Table
类扩展了名为的类object
。这不是参数。您可能要object
显式扩展的原因是,它将类变成了新样式。如果您未明确指定它扩展object
,直到Python 3,它将默认为旧类。(从Python 3开始,无论您是否显式扩展,所有类都是新样式object
。)
有关新式和旧式类的更多信息,请参见此问题。
回答 2
请注意,“新样式”与“旧样式”类的区别特定于Python 2.x;在3.x中,所有类都是“新样式”。
回答 3
对于Python,类Table和类Table(object)相同。
它不是参数,而是从对象(与许多其他语言一样为基类)扩展的。
它只说它继承了“对象”中定义的任何内容。这是默认行为。
回答 4
object是python中定义的类对象的最基本类型。对象的属性如下所示
** >>>目录(对象)
[‘ class ‘,’ delattr ‘,’ doc ‘,’ format ‘,’ getattribute ‘,’ hash ‘,’ init ‘,’ new ‘,’ reduce ‘,’ reduce_ex ‘,’ repr ‘,’ setattr ‘,’ sizeof ‘,’ str ‘,’ subclasshook ‘] **
所以Table(object)只是继承。
回答 5
1)类名(对象):2)类名:它们都是相同的,但第一个类在编写方面相当好,在继承其他类到另一个类时看起来更好,看起来很同质。
一样吗?因此,Python中的所有事物都属于对象,这意味着Python中的所有事物都具有对象的属性,无论是否写入,它都会理解它。首先,我们明确地告诉第二个我们没有。