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被认为是不好的做法?我没听说过。直接访问任何双下划线方法都是不好的做法。