类定义参数与普通类定义[重复]

Posted

技术标签:

【中文标题】类定义参数与普通类定义[重复]【英文标题】:Class definition parameter vs. Normal class definition [duplicate] 【发布时间】:2014-08-18 05:12:07 【问题描述】:

两者有什么区别?这两个不是有相同的功能吗?我不明白object 参数的全部意义。

class Car(object): # object parameter
    def foobar():
        print("Hello World!\n")  

对比

class Car(): # No parameter
    def foobar():
        print("Hello World!\n")

【问题讨论】:

第一个是新样式类,后者是旧样式类。见***.com/questions/54867/… 【参考方案1】:

两个字:

# new style
class Car(object):
    pass

“新班级”是在现代创建班级的推荐方式 蟒蛇。

# classic style
class Car():
    pass

“Classic Class”或“old-style class”是存在于 Python 2.1 及之前版本。它们已向后保留 兼容性。此页面试图列出差异。

请看:

http://python-history.blogspot.com/2010/06/new-style-classes.html https://wiki.python.org/moin/NewClassVsClassicClass https://www.python.org/doc/newstyle/

【讨论】:

【参考方案2】:

在 Python 2 中,前者是“新式类”,而后者是“旧式类”,只是为了向后兼容而存在。你永远不应该将后者用于任何新事物。

在 Python 3 中,我相信完全没有区别。您甚至可以完全省略括号。

【讨论】:

那么有没有技术上正确的方法呢? @user1757703 因为您可能想要新样式的类,如果您想保持向后兼容,请始终使用(object)

以上是关于类定义参数与普通类定义[重复]的主要内容,如果未能解决你的问题,请参考以下文章

WCF DataContract 与普通类 [重复]

C++:如何在结构中定义类实例。类具有参数化构造函数[重复]

使用 typedef 和匿名类定义与传统类定义的等价性 [重复]

如何在codeigniter普通mysql和自定义pdo中运行并发数据库连接[重复]

python类定义[重复]

Proguard 关于重复类定义的警告,但不打印出重复的类