python - 用“with”语句定义的 Python 变量 - 范围是什么?
问题描述
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
您遇到的问题与声明无关。您只是以错误的方式创建了一个类。如果你想在你的类中使用do_something()
方法Session()
,你可以从它继承: ,或者你可以作为变量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()
推荐阅读
- python - ColumnTransformer 的问题。DataFrame 列排序更改
- javascript - Angular2无法获取任何响应数据
- sql - SQL Server 中两个条件之间的异或
- java - 通过java从URL获取Json数组
- php - 移动php成功消息
- java - 他们是一种使您的 java GUI(使用 Window Builder)可以在 eclipse 中使用 Graphics 的方法吗?
- bash - 按原样使用一个命令的输出
- sql-server - 存储过程在使用 SQL Server 的计划作业中不起作用
- android - 底页内的谷歌地图
- javascript - 使用 eq 与不使用 eq 有什么区别?