问题描述
我正在尝试访问 staticmethod
内的类实例,但我在这样做时遇到了困难。这是我的课:
class Worker:
def __init__(self,ch,method,properties,body):
self.ch = ch
self.method = method
self.properties = properties
self.body = body
@staticmethod
def receive_payload_and_validate_schema(body):
# some logic
return body
@staticmethod
def some_func(id_info,partner_params):
id_response = {}
# some logic
self.ch.basic_ack(delivery_tag=self.method.delivery_tag) # This is where the problem is
return id_response
@staticmethod
def another_func(body):
id_info = {} # assume it contains keys and values
partner_params = {} # assume it contains keys and values
# some logic
return Worker.some_func(id_info,partner_params)
如何在 self.ch.basic_ack(delivery_tag=self.method.delivery_tag)
静态方法中使用此表达式 some_func
?
解决方法
根据定义,静态方法与类的实例无关。 some_func
不应该是静态的,或者 ch
也应该是静态的。
您不能使用静态方法。在您的代码中,您是引用 self
,它永远不会传递给静态方法。
self.ch.basic_ack(delivery_tag=self.method.delivery_tag)
在 Python OOP 中,当调用标准方法时,调用该方法的对象作为第一个参数传递。传统上这称为 self
。在上面的行中,您使用的是 self
,但它没有引用。