Python 一行中包含方法的对象
我知道这可能完全没用,但是 我想知道是否可以使用Python 一行中包含方法的对象,python,oop,lambda,Python,Oop,Lambda,我知道这可能完全没用,但是 我想知道是否可以使用lambda函数在一行中创建一个type()对象 我想创建一个函数,该函数增加对象的值: 我正在尝试以下内容: class thing: def __init__(self): self.val = 0 def inc(self): self.val += 1 obj = thing() 因此,我只需在dict中添加一个lambda函数,并在类型的尾部添加一个(): obj = type('thin
lambda
函数在一行中创建一个type()
对象
我想创建一个函数,该函数增加对象的值:
我正在尝试以下内容:
class thing:
def __init__(self):
self.val = 0
def inc(self):
self.val += 1
obj = thing()
因此,我只需在dict中添加一个lambda函数,并在类型的尾部添加一个()
:
obj = type('thing', (), {'value':0, 'inc': lambda self: self.value+1})()
这里的问题是lambda只返回一个值,我认为我不能影响obj
所以我的问题是:我可以在类型定义中创建一个lambda函数来更改对象的实例值吗?您可以使用
setattr
>>> obj = type('thing',(),{'value':0, 'inc': lambda self: setattr(self, 'value', self.value+1)})()
>>> obj.inc()
>>> obj.inc()
>>> obj.value
2
但是我同意这是完全无用的。您可以使用
setattr
>>> obj = type('thing',(),{'value':0, 'inc': lambda self: setattr(self, 'value', self.value+1)})()
>>> obj.inc()
>>> obj.inc()
>>> obj.value
2
但是我同意这是完全没有用的。p.S.对于需要的水平滚动表示歉意,但您确实在一行中要求了它……p.S。抱歉,您需要水平滚动,但您确实在一行中要求了它…FWIW,您可以使用而不是编写自己的类型。FWIW,您可以使用而不是编写自己的类型。