我正在尝试将一些python代码翻译为scala代码。所以我是Python中的总菜鸟。
但为什么有些类将对象作为参数但从未明确使用它?首先将它作为参数的原因是什么?
示例:
class Table(object)
感谢您的时间。
答案 0 :(得分:94)
在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
成为一个新式的类。
答案 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中的每件事物都具有对象的属性,如果写或不理解它。 首先,我们明确告诉它,我们没有。