Python 让函数使用对象的变量名

Python 让函数使用对象的变量名,python,Python,如果我有以下代码: class foo: def __init__(self): self.w = 5 self.z = 10 def sum(obj,x,y): return obj.x+obj.y f = foo() print sum(foo,'x','y') 如何创建一个函数,该函数接受两个未知的变量名并返回这些变量的总和 在这种情况下,示例应打印15。 编辑: 最后一行的输入应该是print sum(foo,'w','z')所有(我

如果我有以下代码:

class foo:
    def __init__(self):
        self.w = 5
        self.z = 10

def sum(obj,x,y):
    return obj.x+obj.y

f = foo()
print sum(foo,'x','y')
如何创建一个函数,该函数接受两个未知的变量名并返回这些变量的总和

在这种情况下,示例应打印15。 编辑: 最后一行的输入应该是print sum(foo,'w','z')

所有(我想?)python对象都有一个内置的
\uuu getattribute\uu
方法。像这样使用它:

def sum(obj,x,y):
    return obj.__getattribute__(x)+obj.__getattribute__(y)

该方法接受一个字符串,并将其“解包”为变量名。

您希望它如何计算出字符串
'x'
的意思应该是
foo.w
,而字符串
'y'
的意思应该是
foo.z
?我想您可能在这里寻找。但通常,当您使用
getattr
时,它是。你为什么要
打印sum(foo,'x,'y')
而不是
sum(foo.x,foo.y)
(或者你真正想要的任何东西)?我想你的意思是
sum(f,'w','z')
?不,不,不。使用。@Aran Fey被认为是不好的做法?我没听说过。直接访问任何双下划线方法都是不好的做法。