Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
面向对象的python_Python - Fatal编程技术网

面向对象的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):

我有一个简单的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):
    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()方法。可以找到有关它们之间差异的更多详细信息,但也广泛讨论了堆栈溢出:


建议使用这些
新样式类
,以便让您的基类从
对象
类继承。

您可能需要查看一下,然后查看
名称错误
通常是指尝试引用不存在的内容。仅供将来参考。