Python从同一类方法调用类属性



我有一个类方法wait_for_operation,我想从中调用class属性并生成一个新的客户端,以便与该类方法一起使用。

def get_new_bearer_token():
return "new_token"
class MyClass(object):
def __init__(self, json):
self.json = json
@property
def client(self):
k8_loader = kube_config.KubeConfigLoader(self.json)
call_config = type.__call__(Configuration)
k8_loader.load_and_set(call_config)
Configuration.set_default(call_config)
return client
@classmethod
def wait_for_operation(self, kube_config, cloud):
while True:
if cloud == "AWS":
kube_config['users'][0]['user']['token'] = get_new_bearer_token()
self.json = kube_config
#call class property to generate a new client with token and use it

if __name__ == '__main__':
kube_config = {}
my_client = MyClass(json=kube_config)
my_client.client.CoreV1Api().list_namespace(watch=False)
result = MyClass.wait_for_operation(kube_config=kube_config,cloud='AWS')

使用更改状态或有副作用的属性是一个非常糟糕的主意。属性旨在表示实例数据的视图,这就是为什么我们不真正说";调用属性";,而是";获取或设置属性";。

我的建议是删除@property装饰器,将client变成一个普通的方法。给它一个更好的名字,比如generate_new_client。然后像调用任何其他方法一样调用它——self.generate_new_client()

最新更新