如何在嵌套函数中避免直接引用外部类名指定内部类类型?
解决方案
你可以通过self.class.Config替代硬编码的类名,因为self是EngineCheck的实例,self.__class__会指向它所属的类本身:
import os class EngineCheck: class Config: IP = os.environ['SERVICE_IP'] PORT = os.environ.get('SERVICE_PORT', 10051) def _request_all_(self): def _send_response(config: self.__class__.Config): # do stuff return True
如果觉得self.__class__.Config写起来繁琐,也可以在外部方法里先把内部类存为局部变量,让内部函数直接引用:
import os class EngineCheck: class Config: IP = os.environ['SERVICE_IP'] PORT = os.environ.get('SERVICE_PORT', 10051) def _request_all_(self): config_cls = self.__class__.Config def _send_response(config: config_cls): # do stuff return True
至于你尝试的super().Config无效,是因为super()返回的是当前类父类的代理对象,而Config是EngineCheck自身的内部类,并非父类的属性,所以无法通过super()访问到。
内容的提问来源于stack exchange,提问作者Silviu Bajenaru Marcu
相关产品推荐
相关产品推荐

