如何解决一行中带有方法的对象
我知道这可能完全没用,但是...
如果可以使用type()
函数用一行lambda
创建一个对象,我很想。
我想创建一个增加对象值的函数:
我正在尝试:
class thing:
def __init__(self):
self.val = 0
def inc(self):
self.val += 1
obj = thing()
因此,我只向字典添加lambda函数,并在类型的末尾添加()
:
obj = type('thing',(),{'value':0,'inc': lambda self: self.value+1})()
问题,这里的问题是lambda仅返回一个值,我认为我不会影响value
的{{1}}
所以我的问题是:我可以在类型定义中创建一个lambda函数来更改对象的实例值吗?
解决方法
您可以使用setattr
。
>>> obj = type('thing',(),{'value':0,'inc': lambda self: setattr(self,'value',self.value+1)})()
>>> obj.inc()
>>> obj.inc()
>>> obj.value
2
但是我同意这完全没有用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。