class Context:
def __init__(self, version = None):
self.version = version
class Subparser:
def __init__(self):
self.play = play
def on_packet(self, packet):
self.version = packet.game
class Parser(Subparser):
def __init__(self):
super().__init__()
def parse_er_data(self, data):
temp = self.version
breakpoint()
=> print(temp)
=> #the output is always None, but it should not be!
对于以上内容,parser_er_data()
函数中的self.version
将始终返回值None
,我可以理解为什么,因为它从Context class
而不是Subparser class
继承了self.version。
有没有办法让它取on_packet()
函数中Subparser class
-的值?一个限制-我不知道packet
是什么样子,也不知道它来自哪里!那么,仅凭上述信息,我们能做到这一点吗?
从函数范围获取变量的方法:
def fun(x=None):
a=1
b=2
if x==None:
return {'a':a,'b':b}
#... the rest of the function
return #... te end
fun()['a'] #output 1
fun()['b'] #output 2
但我看不出为什么有人想这么做,但。。。无论如何,您的问题是关于版本的,并且上下文中的版本不是SubParser的版本