使用Object作为参数的类

时间:2011-09-11 00:39:45

标签: python

我正在尝试将一些python代码翻译为scala代码。所以我是Python中的总菜鸟。

但为什么有些类将对象作为参数但从未明确使用它?首先将它作为参数的原因是什么?

示例:

class Table(object)

感谢您的时间。

6 个答案:

答案 0 :(得分:94)

在Python2中,这声明Tablenew-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成为一个新式的类。

答案 1 :(得分:15)

Table类正在扩展名为object的类。这不是一个论点。您可能希望显式扩展object的原因是它将类转换为新样式类。如果你没有明确指定它扩展object,那么在Python 3之前,它将默认为旧式类。 (从Python 3开始,所有类都是新式的,无论是否显式扩展object。)

有关新式和旧式课程的更多信息,请see this question

答案 2 :(得分:3)

请注意,“new-style”与“old-style”类的区别特定于Python 2.x;在3.x中,所有类都是“new-style”。

答案 3 :(得分:2)

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

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

它所说的只是它继承了“object”中定义的内容。这是默认行为。

答案 4 :(得分:1)

object是python中定义的最基类的类对象。 对象的属性可以看作如下

**指与GT;> DIR(对象)

['',' delattr ',' doc ','格式','< strong> getattribute ','哈希',' init ','','减少',' reduce_ex ',' repr ',' setattr ',' sizeof ',' str ',' subclasshook '] **

所以Table(对象)只是继承。!

答案 5 :(得分:0)

1)班级名称(对象):2)班级名称: 它们都是相同的但是第一个在写作方面要好一些,在将其他类继承到另一个类时它看起来更好,看起来很均匀。

怎么样? 所以,Python中的每一件事都是在对象意味着Python中的每件事物都具有对象的属性,如果写或不理解它。 首先,我们明确告诉它,我们没有。