吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1420|回复: 5
收起左侧

[求助] 求助,python关于类及文件引用问题请教。

[复制链接]
L_yj 发表于 2019-10-21 18:35
本帖最后由 L_yj 于 2019-10-21 13:39 编辑

当前创建有一个文件夹中包含两个文件:
operation
--data_config.py
--get_data.py

代码如下:
data_config.py

[Python] 纯文本查看 复制代码
# 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
[Python] 纯文本查看 复制代码
# 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
当前代码运行后有报错


从网上找到几种方案,尝试后均没有正常运行代码。
还请大神们看一下原因,求说明一下。
QQ截图20191021183428.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

bluerabbit 发表于 2019-10-21 19:18
data_config.py
[Python] 纯文本查看 复制代码
class global_var:
    def __init__(self):
        self.data = '0'
    def get_case_data(self):
        return self.data


get_data.py
[Python] 纯文本查看 复制代码
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())
 楼主| L_yj 发表于 2019-10-22 10:09
bluerabbit 发表于 2019-10-21 14:18
data_config.py
[mw_shl_code=python,true]class global_var:
    def __init__(self):

有效果,不过需要把data_config 中__init__删掉,直接写成data=‘0’

不知道为什么不能直接 import data_config  

能解答一下吗?
井右寺 发表于 2019-10-22 10:24
我记得 同目录是 可以直接引用的呀
from data_config import global_var
以包来引用的话,包目录下得有__init__.py文件
from . import data_config
bluerabbit 发表于 2019-10-23 10:00
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__() 里,必须直接在类体下。
[Python] 纯文本查看 复制代码
#!/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 下的成员,所以会出错。
[Python] 纯文本查看 复制代码
#!/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())

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
L_yj + 1 + 1 谢谢你的解答!

查看全部评分

bluerabbit 发表于 2019-10-23 10:01
井右寺 发表于 2019-10-22 10:24
我记得 同目录是 可以直接引用的呀
from data_config import global_var
以包来引用的话,包目录下得有__ ...

Python 3.x 下,包目录下的 __init__.py 文件不是必须的,Python 2.x 才是必须
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-13 07:52

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表