所有这些类都在运行,它们的外向行为是相同的,但我不相信它们都是一样的(我的意思是除了它们的名字之外我无法区分)。不幸的是,我没有通过运行此代码获得任何错误 - 任何人都知道发生了什么?
- RandNum1 -
class RandNum1:
a = 2
#do stuff
b=RandNum1()
b.a
c=RandNum1
c.a
- RandNum2 -
class RandNum2():
a = 2
#do stuff
b=RandNum2()
b.a
c=RandNum2
c.a
- RandNum3 -
class RandNum3(object):
a = 2
#do stuff
b=RandNum3()
b.a
c=RandNum3
c.a
答案 0 :(得分:1)
第三个是“新风格”类,这是在现代Pythhon 2中进行类定义的正确方法(它不再是新的,但它就是所谓的)。在这个例子中,差异不明显,但如果你想做任何复杂的继承,属性描述符,内省或元类,你应该使用
class ClassName(object):
pass
基类的形式和
class DerivedClassName(ClassName):
pass
子类的表单。
答案 1 :(得分:0)
RandNum1
和RandNum2
是完全相同的旧式类,没有新的对象功能。
RandNum3
是一种新式的课程。一切都在这里工作。
在大多数情况下,你应该总是使用新式的类,除非你需要的东西非常简单。