我试图实现以下(从实际代码简化)
def _do_something(o1, o2, keyatt):
x = o1.keyatt
y = o2.keyatt
return x == y
_do_something(srcObj, destObj, a)
_do_something(srcObj, destObj, b)
两个对象属于同一类,具有'a'和'b'属性
不确定如何传递属性,以便它们与o1和o2动态关联。
我尝试了_do_something(srcObj, destObj, 'a')
,但我得到了属性错误。我也尝试将_do_something
修改为使用的下标(即o1[keyatt]
但是抛出了一个TypeError,该对象不是可编写脚本的。
这在Python中是否可行? (我对这门语言很新。)
使用getattr
:
def _do_something(o1, o2, keyatt):
x = getattr(o1, keyatt)
y = getattr(o2, keyatt)
return x == y
class A:
def __init__(self, a, b):
self.a = a
self.b = b
srcObj = A(1, 2)
destObj = A(1, 10)
print(_do_something(srcObj, destObj, 'a'))
print(_do_something(srcObj, destObj, 'b'))
输出:
True
False