Python,map with lambda只返回my list()上的None对象

2024-06-16 14:16:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有密码:

    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 list中包含的字符串来更改MyHouse变量,但是当我看到结果时,我只得到None objects?,为什么要这样做?如何修复它,这是因为setattr不提供输出

    print(MyChoice) 
    Output: [None, None, None] 

Tags: selfnone密码whatlistclasssayprint
1条回答
网友
1楼 · 发布于 2024-06-16 14:16:27

喝了杯咖啡后我终于解决了, 我只需要使用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

相关问题 更多 >