我有这个功能(包括说明):
def deep_list(x):
"""fully copies trees of tuples to a tree of lists.
deep_list( (1,2,(3,4)) ) returns [1,2,[3,4]]"""
if type(x)!=type( () ):
return x
return map(deep_list,x)
我想将该函数插入到我已经创建的函数类中,所以我需要在开头的函数参数中添加self
。
我的问题是:
如何以正确的方式self
插入deep_list
末尾的“地图”功能?
答案 0 :(得分:3)
取决于x
与您班级的关系。
一种方法是使函数成为静态方法。这可能是最不可能的
@staticmethod
def deep_list(x):
"""fully copies trees of tuples to a tree of lists.
deep_list( (1,2,(3,4)) ) returns [1,2,[3,4]]"""
if type(x)!=type( () ):
return x
return map(deep_list,x)
如果您的意思是对某个属性进行操作,那么就这样做
def deep_list(self):
"""fully copies trees of tuples to a tree of lists.
deep_list( (1,2,(3,4)) ) returns [1,2,[3,4]]"""
if type(self.x)!=type( () ):
return self.x
return map(deep_list, self.x)
最后,如果您正在为list
创建子类或创建类似的序列,那么您可以使用self
def deep_list(self):
"""fully copies trees of tuples to a tree of lists.
deep_list( (1,2,(3,4)) ) returns [1,2,[3,4]]"""
if type(self)!=type( () ):
return self
return map(deep_list, self)
答案 1 :(得分:1)
我不确定我是否理解你的要求,但是如果你映射一个绑定方法,那么自我就已经被包含在内了:
>>> class Foo(object):
... def func(self, x):
... return x + 2
>>> f = Foo()
>>> map(f.func, [1, 2, 3])
[3, 4, 5]