我有该代码:
class Welcome(object): MyHouse='Earth' def say(self, what): print(what, self.MyHouse) welcome = Welcome() Living = ['World', 'Planet', welcome.MyHouse] MyChoice = list(map(lambda choice : setattr(welcome, 'MyHouse', choice), Living)) print(''.join(str(MyChoice) for MyChoice in MyChoice)) getattr(welcome, 'say')('Hello')
使用此代码,我想使用setattr()根据Living列表中包含的字符串更改MyHouse变量,但是当我看到结果时,我只会得到None对象?为什么这样做以及如何解决它,这是因为setattr不提供输出?。
print(MyChoice) Output: [None, None, None]
答案 0 :(得分:0)
所以,我喝完咖啡后设法解决了 我只需要使用一个for循环 尽管我不知道执行此操作的确切原因,并且想解释一下,但我只是认为map()消除了for循环的需要。 这是代码:
class Welcome(object): MyHouse='Earth' def say(self, what): print(what, self.MyHouse) welcome = Welcome() Living = ['World', 'Planet', welcome.MyHouse] MyChoice = map(lambda choice : setattr(welcome, 'MyHouse', choice), Living) for i in MyChoice: getattr(welcome, 'say')('Hello')
如果我需要一个for循环,为什么要使用lambda和map,那是没用的代码。