为什么在我的执行方法中的 getattr 上会出现 AttributeError?

Why do I get an AttributeError on getattr in my execute method?

下面的代码用作 SimpleXMLRPCServer 的一部分,用于接收来自我编写的 Java 客户端的命令。 Java 客户端将调用此执行函数并传入来自 CameraAssembler class.

的函数名称
from nsCamera.CameraAssembler import CameraAssembler
class MyFunctions:
    ca = None
    def initialize(self):
        # Create Camera object
        self.ca = CameraAssembler(commname=COMM, boardname=BOARD, sensorname=SENSOR, verbose=True)
        return True
    def execute(self, code):
        func = getattr(self.ca,code)
        output = func()
        return output

myfuncs = MyFunctions()
myfuncs.initialize()
output = myfuncs.execute('arm()')
print(output)

输出:

Traceback (most recent call last):
  File "pyTestServer.py", line 31, in <module>
    output = myfuncs.execute("arm()")
  File "pyTestServer.py", line 21, in execute
    func = getattr(MyFunctions.ca,code)
AttributeError: CameraAssembler instance has no attribute 'arm()'

你的括号放错地方了。属性不叫arm(),叫arm;您需要调用获取该属性的结果。

output = myfuncs.execute('arm')()

(请注意,此代码不是特别惯用。特别是,我不明白为什么要将 ca 设置为 class 属性,而不是实例属性。另外,初始化通常在 __init__ 方法中进行,该方法在实例化时自动调用。)