求助,python关于类及文件引用问题请教。
本帖最后由 L_yj 于 2019-10-21 13:39 编辑当前创建有一个文件夹中包含两个文件:
operation
--data_config.py
--get_data.py
代码如下:
data_config.py
# coding:utf-8
class global_var:
# data = '0'
def __init__(self):
self.data = '0'
def get_case_data(self):
return global_var.data
get_data.py
# coding:utf-8
from operation_data import data_config
# import data_config
# from . import data_config
class Getdata:
def get_request_data(self):
col = int(data_config.get_case_data())
return col
if __name__ == '__main__':
gd = Getdata()
print(gd.get_request_data())
问题:
运行get_data.py
当前代码运行后有报错
从网上找到几种方案,尝试后均没有正常运行代码。
还请大神们看一下原因,求说明一下。
data_config.py
class global_var:
def __init__(self):
self.data = '0'
def get_case_data(self):
return self.data
get_data.py
from operation_data import data_config
class Getdata:
def get_request_data(self):
col = int(data_config.global_var().get_case_data())
return col
if __name__ == '__main__':
gd = Getdata()
print(gd.get_request_data()) bluerabbit 发表于 2019-10-21 14:18
data_config.py
class global_var:
def __init__(self):
有效果,不过需要把data_config 中__init__删掉,直接写成data=‘0’
不知道为什么不能直接 import data_config
能解答一下吗? 我记得 同目录是 可以直接引用的呀
from data_config import global_var
以包来引用的话,包目录下得有__init__.py文件
from . import data_config
L_yj 发表于 2019-10-22 10:09
有效果,不过需要把data_config 中__init__删掉,直接写成data=‘0’
不知道为什么不能直接 import da ...
data_config.py 下面这两种写法都可以返回 data 值,如果你的 return 语句是 return global_var.data,相当于是返回类属性,那 data 定义就不能在 __init__() 里,必须直接在类体下。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#1
class global_var:
def __init__(self):
self.data = '0'
def get_case_data(self):
return self.data
#2
class global_var:
data = '0'
def get_case_data(self):
return global_var.data
get_data.py 直接 import data_config 可以的。之前你的 code 里 col = int(data_config.get_case_data()),意味着 get_case_data 是 data_config 的一个成员,而实际上它只是 data_config.global_var 下的成员,所以会出错。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#from operation_data import data_config
import data_config
class Getdata:
def get_request_data(self):
col = int(data_config.global_var().get_case_data())
return col
if __name__ == '__main__':
gd = Getdata()
print(gd.get_request_data())
井右寺 发表于 2019-10-22 10:24
我记得 同目录是 可以直接引用的呀
from data_config import global_var
以包来引用的话,包目录下得有__ ...
Python 3.x 下,包目录下的 __init__.py 文件不是必须的,Python 2.x 才是必须
页:
[1]