我想向内置list
类型添加一些属性,所以我这样写:
class MyList(list):
def __new__(cls, *args, **kwargs):
obj = super(MyList, cls).__new__(cls, *args, **kwargs)
obj.append('FirstMen')
return obj
def __init__(self, *args, **kwargs):
self.name = 'Westeros'
def king(self):
print 'IronThrone'
if __name__ == '__main__':
my_list = MyList([1, 2, 3, 4])
print my_list
但my_list
仅包含元素'FirstMen'
。为什么我__new__
在这里不工作?我应该如何从类似内置类型的继承list
?像这样的不可变类型是否相同str
?
该list
类型通常在其__init__()
方法内进行列表的实际初始化,因为这是可变类型的约定。__new__()
子类型化不可变类型时,只需要覆盖即可。虽然
可以__new__()
在对列表进行子分类时覆盖,但对于您的用例而言,这样做没有多大意义。覆盖比较容易__init__()
:
class MyList(list):
def __init__(self, *args):
list.__init__(self, *args)
self.append('FirstMen')
self.name = 'Westeros'
另请注意,super()
在这种情况下,建议不要使用。您想在list.__init__()
这里打电话,别无其他。
问题内容: 我正在使用Flask,并且从get请求返回一个XML文件。如何将内容类型设置为xml? 例如 问题答案: 尝试这样: 实际的Content-Type基于mimetype参数和字符集(默认为UTF-8)。
问题内容: 我想在Python中实现自定义列表类作为的子类。为了获得所有列表操作的完全类型兼容性,我需要从基类中重写的最少方法集是什么? 这个问题表明至少需要重写。从进一步的研究,也和是必需的。所以我有这段代码: 下列语句即使没有覆盖方法也可以按需工作: 这些语句仅与上述类定义中的覆盖方法一起使用: 我唯一不知道如何实现的是使扩展切片返回正确的类型: 我需要在类定义中添加些什么才能获得类型? 另外
我正在使用Flask,并从get请求返回一个XML文件。如何将内容类型设置为xml? 例如。
问题内容: 我想继承该类型,并让切片返回后代类型的对象,但是它返回一个。最少的编码方式是什么? 如果没有一种整洁的方法,我将在内部添加一个列表,该列表稍显混乱,但并非不合理。 到目前为止,我的代码: 问题答案: 我想你应该重写该方法以返回您类型的对象… 也许像下面这样?
问题内容: 我有及其继承的类。如何从课程中获取属性? 举例来说,让这些和对象: 我想做一些事情,例如: 并得到。我怎样才能做到这一点? 问题答案: 你不能。 实例仅继承父类的方法和属性,而不继承 实例 属性。您不应混淆两者。 是 实例的实例 属性。本实例将有他们 自己 的副本属性。 通常,您将对构造函数进行编码以采用两个参数: 另一种方法是保留对实例的引用: 从那里不再继承。像这样使用它:
问题内容: 我有一个数据框,其中包含有关电影的信息。它有一个名为的列,其中包含它所属的流派列表。例如: 我想知道如何查询数据框,以便它返回属于某个类型的电影? 例如,可能会返回0或1。 我知道列表,可以做以下事情: 但是,在大熊猫中,我找不到类似的东西,我唯一知道的是,但它不适用于列表类型。 问题答案: 您可以使用create ,然后: