面向对象的python
我有一个简单的python类示例:面向对象的python,python,Python,我有一个简单的python类示例: class song: def __init__(self, x): print x bang=song(['Our whole universe was in a hot dense state,Then nearly fourteen billion years ago expansion started, wait...']) 这很有效。 但在另一本书中,创建新类时使用了“对象”一词: class song(object):
class song:
def __init__(self, x):
print x
bang=song(['Our whole universe was in a hot dense state,Then nearly fourteen billion years ago expansion started, wait...'])
这很有效。
但在另一本书中,创建新类时使用了“对象”一词:
class song(object):
def __init__(self,x):
print x
bang=song(['Our whole universe was in a hot dense state,Then nearly fourteen billion years ago expansion started, wait...'])
这也行得通。加上如果对象被替换为,例如,x:
class song(x):
def __init__(self,x):
print x
smile=song(['Our whole universe was in a hot dense state,Then nearly fourteen billion years ago expansion started, wait...'])
它不起作用(name错误:未定义名称x
)。
就我所知,
对象有什么特别之处,它甚至不是一个保留字,不是吗?为什么使用它的代码有效,而使用x
-则无效?因为对象是您继承的基础对象<代码>x
不作为对象存在,因此无法从继承
你可以做:
class x(object):
def __init__(self, item)
self.item = item
class song(x):
def print(self):
print(self.item)
bang=song(['a bunch of text']) #why is this a list?
bang.print()
这里有一个继承
——太多的x使这一点变得混乱这不起作用,因为x
被视为构造函数类。这基本上意味着,为了使代码正常工作,x
将被定义为类
当您使用object
创建类时,您使用的模板类是空的,用于创建新类型的类。使用int
或dict
也会发生类似的情况。新类继承类型的属性
由于未定义类x
,因此新类不能使用x
作为构造函数。因此,返回该错误。首先,您应该了解
如其他答案所示,如果x本身是一个类,则可以说明类歌曲(x):
。通过这样做,song
类将继承基类x的方法
现在,类声明从对象继承的原因可以追溯到python2.2。这些类型的类声明称为:新样式类
它们具有与经典对象不同的对象模型,并且具有经典对象中不存在的一组特性和功能。这方面的一些例子是@property关键字,super()方法。可以找到有关它们之间差异的更多详细信息,但也广泛讨论了堆栈溢出:
建议使用这些新样式类
,以便让您的基类从对象
类继承。您可能需要查看一下,然后查看名称错误
通常是指尝试引用不存在的内容。仅供将来参考。