一直对lambda表达式存在疑惑
Topic source不懂不要说话呀大哥,和定制类有什么关系呢?我看了好几遍定制类也没看出来,正解如下。
def add(self, value):
self.append(value)
class ListMetaclass(type):
def __new__(cls, name, bases, attrs):
# print(cls)
# print(name)
# print(bases)
# print(type(attrs))
# attrs['add'] = lambda self, value: self.append(value)
attrs['add'] = add
attrs['name'] = 'Tom'
return type.__new__(cls, name, bases, attrs)
class MyList(list, metaclass = ListMetaclass): # 额外增加add方法,实际等价于append。
pass
mli = MyList()
mli.add(1)
mli.add(2)
mli.add(3)
print(mli.name)
print(mli)
- 1
Alian
class ListMetaclass(type):
def __new__(cls, name, bases, attrs):
attrs['add'] = lambda self, value: self.append(value)
return type.__new__(cls, name, bases, attrs)
1.如上面的代码中attrs['add'] = lambda self, value: self.append(value),self和value从哪里如何传入该表达式?
2.所有lambda表达式都能写成def定义函数的形式吗?如果能的话,上面那句lambda表达式该如何转换为一个函数。如def fun(*args): ...... ,然后attr['add'] = func。