鱼C论坛

 找回密码
 立即注册
查看: 851|回复: 11

[已解决]在类的定义中引入模块好像不能用

[复制链接]
发表于 2020-5-3 16:36:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import time as t#引用模块写在里面不能用,相当于只存储起来,需要放在外面
class Record:
     #引入时间模块
    def __init__(self,value,variable_name):
        self.value=value#操作的值
        self.variable_name=variable_name#操作的变量名(实例化对象的名字)

    def get_clock(self):#获取时间
        return (t.asctime(t.localtime()))

我发现当我把import time 模块放到了类定义的内部之后,好像没有办法调用相应的函数这是为啥呀???
最佳答案
2020-5-3 18:11:08
试试这样??
class Record:
     #引入时间模块
    import time as t
    def __init__(self,value,variable_name):
        self.value=value#操作的值
        self.variable_name=variable_name#操作的变量名(实例化对象的名字)

    def get_clock(self):#获取时间
        return (self.t.asctime(self.t.localtime()))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-3 16:45:11 | 显示全部楼层
写 Record.函数 或 self.函数 或 cls.函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-3 16:47:02 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-3 16:45
写 Record.函数 或 self.函数 或 cls.函数

我写了一下好像还是不行,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-3 16:48:21 | 显示全部楼层
liliya 发表于 2020-5-3 16:47
我写了一下好像还是不行,

为啥必须要放在外面啊,不是特别懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-3 16:52:19 | 显示全部楼层
liliya 发表于 2020-5-3 16:48
为啥必须要放在外面啊,不是特别懂

代码发上来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-3 17:11:12 | 显示全部楼层
import time as t#引用模块写在里面不能用,相当于只存储起来,需要放在外面
class Record:
     #引入时间模块
    def __init__(self,value,variable_name):
        self.value=value#操作的值
        self.variable_name=variable_name#操作的变量名(实例化对象的名字)
        self.data='{} 变量于北京时间 {} 被创建,{}={}'.format(self.variable_name,self.get_clock(),self.variable_name,self.value)
        with open('C:\\Users\\Liliya\\Desktop\\record.txt','a') as f :
            f.write(self.data+'\n')

    def get_clock(self):#获取时间
        return (t.asctime(t.localtime()))

    def __get__(self,instance,owner):
        self.data='{} 变量于北京时间 {} 被读取,{}={}'.format(self.variable_name,self.get_clock(),self.variable_name,self.value)
        with open('C:\\Users\\Liliya\\Desktop\\record.txt','a') as f :
            f.write(self.data+'\n')
        return self.value
    def __set__(self,instance,value):
        self.value=value
        self.data='{} 变量于北京时间 {} 被修改,{}={}'.format(self.variable_name,self.get_clock(),self.variable_name,self.value)
        with open('C:\\Users\\Liliya\\Desktop\\record.txt','a') as f :
            f.write(self.data+'\n')
    def __delete__(self,instance):
        del self.value
        self.data='{} 变量于北京时间 {} 被删除'.format(self.variable_name,self.get_clock())
        with open('C:\\Users\\Liliya\\Desktop\\record.txt','a') as f :
            f.write(self.data+'\n')

#主程序
class Test:
        x = Record(10, 'x')
        y = Record(8.8, 'y')
test = Test()
print(test.x)
print(test.y)
test.x = 123
test.x = 1.23
test.x = 'hello world'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-3 17:39:02 | 显示全部楼层
class A():
    import os
    global os
a = A()
print(os.getcwd())
刚刚试了一下,应该是像函数一样要global吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-3 17:45:18 | 显示全部楼层
_荟桐_ 发表于 2020-5-3 17:39
刚刚试了一下,应该是像函数一样要global吧

刚试了一下,你说的对的,不过不太明白为什么,在类定义里面的话不是相当于一个类的属性了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-3 17:49:22 | 显示全部楼层
liliya 发表于 2020-5-3 17:45
刚试了一下,你说的对的,不过不太明白为什么,在类定义里面的话不是相当于一个类的属性了吗?

一个类的属性是类属性,就要用类名或实例名+属性名访问
或者直接global也行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-3 18:11:08 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
试试这样??
class Record:
     #引入时间模块
    import time as t
    def __init__(self,value,variable_name):
        self.value=value#操作的值
        self.variable_name=variable_name#操作的变量名(实例化对象的名字)

    def get_clock(self):#获取时间
        return (self.t.asctime(self.t.localtime()))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-3 19:11:53 From FishC Mobile | 显示全部楼层
本帖最后由 _2_ 于 2020-5-3 19:12 编辑
liliya 发表于 2020-5-3 17:45
刚试了一下,你说的对的,不过不太明白为什么,在类定义里面的话不是相当于一个类的属性了吗?


你可以试试这样:
class A:
    def __init__(self):
        self.lib = __import__("time")

类操作一定要加上 self, 否则就无法调用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-3 20:28:36 | 显示全部楼层
把代码中的 t. 改为 self.t. ,因为 t 放在类里面就是属于类属性
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-27 03:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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