动态使用类属性和可重用函数

问题描述 投票:0回答:1

我试图实现以下(从实际代码简化)

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中是否可行? (我对这门语言很新。)

python python-3.x
1个回答
1
投票

使用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
© www.soinside.com 2019 - 2024. All rights reserved.