Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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_Oop_Lambda - Fatal编程技术网

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,您可以使用而不是编写自己的类型。