class S:
def __init__(self):
sess.do_something()
主要:
if __name__ == '__main__':
with Session() as sess:
s1 = S()
s1.do_something()
只要class S
在同一个文件中,上面的代码就可以工作。当类在单独的文件中时,它不起作用(NameError: name 'sess' is not defined
)。
这是意料之中的吗?
您遇到的问题与with
语句无关。 您只是以错误的方式创建了一个类。 如果要在类中使用Session()
的do_something()
方法,可以从中继承:class S(Session): ...
,也可以将sess
作为变量传递:
class S:
def __init__(self, session):
self.session = session
def do_something(self)
return self.session.do_something()
if __name__ == '__main__':
with Session() as sess:
s1 = S(sess)
s1.do_something()