在 Python 中,如何更改函数将根据参数查找的类属性?[复制]

In Python, how do I change which class's attribute a function will look for based on a parameter? [duplicate]

提问人:NateBradshaw 提问时间:12/29/2021 更新时间:12/29/2021 访问量:36

问:

我想使用相同的函数两次,但更改该函数将使用的类属性。它如下所示:

class Player:
    def __init__(self):
        self.primary_color = 'blue'
        self.secondary_color = 'pink'

    def show_color(self, color_attribute)
        print(color_attribute)

player = Player

print(player.show_color(primary_color))
>>>'blue'
print(player.show_color(secondary_color))
>>>'pink'

这个特殊的颜色示例可能不是很有帮助,但我正在从事的项目将从这种能力中受益匪浅。

python python 类 属性 first-class-functions

评论

0赞 yeputons 12/29/2021
究竟可以论证什么?一个任意字符串,一个特别准备的常量,还有别的东西?show_color

答:

0赞 e.Fro 12/29/2021 #1

在这种情况下,函数应该是静态的,因为它不直接使用类属性。一个快速的解决方案是将属性直接传递给函数:show_color

player = Player()
print(player.show_color(player.primary_color))
>>>'blue'
print(player.show_color(player.secondary_color))
>>>'pink'

但正如我所说,该函数在类中没有多大意义。根据您的最终用例,您可以直接访问该属性:Player

print(player.primary_color)
>>>'blue'
print(player.secondary_color)
>>>'pink'