鱼C论坛

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

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

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

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

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

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

  7.     def get_clock(self):#获取时间
  8.         return (t.asctime(t.localtime()))
复制代码


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

  7.     def get_clock(self):#获取时间
  8.         return (self.t.asctime(self.t.localtime()))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-3 16:45:11 | 显示全部楼层
写 Record.函数 或 self.函数 或 cls.函数
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

我写了一下好像还是不行,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

为啥必须要放在外面啊,不是特别懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

代码发上来
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

  12.     def __get__(self,instance,owner):
  13.         self.data='{} 变量于北京时间 {} 被读取,{}={}'.format(self.variable_name,self.get_clock(),self.variable_name,self.value)
  14.         with open('C:\\Users\\Liliya\\Desktop\\record.txt','a') as f :
  15.             f.write(self.data+'\n')
  16.         return self.value
  17.     def __set__(self,instance,value):
  18.         self.value=value
  19.         self.data='{} 变量于北京时间 {} 被修改,{}={}'.format(self.variable_name,self.get_clock(),self.variable_name,self.value)
  20.         with open('C:\\Users\\Liliya\\Desktop\\record.txt','a') as f :
  21.             f.write(self.data+'\n')
  22.     def __delete__(self,instance):
  23.         del self.value
  24.         self.data='{} 变量于北京时间 {} 被删除'.format(self.variable_name,self.get_clock())
  25.         with open('C:\\Users\\Liliya\\Desktop\\record.txt','a') as f :
  26.             f.write(self.data+'\n')

  27. #主程序
  28. class Test:
  29.         x = Record(10, 'x')
  30.         y = Record(8.8, 'y')
  31. test = Test()
  32. print(test.x)
  33. print(test.y)
  34. test.x = 123
  35. test.x = 1.23
  36. test.x = 'hello world'
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-3 17:39:02 | 显示全部楼层
  1. class A():
  2.     import os
  3.     global os
  4. a = A()
  5. print(os.getcwd())
复制代码

刚刚试了一下,应该是像函数一样要global吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

刚试了一下,你说的对的,不过不太明白为什么,在类定义里面的话不是相当于一个类的属性了吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

一个类的属性是类属性,就要用类名或实例名+属性名访问
或者直接global也行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

  7.     def get_clock(self):#获取时间
  8.         return (self.t.asctime(self.t.localtime()))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


你可以试试这样:
  1. class A:
  2.     def __init__(self):
  3.         self.lib = __import__("time")
复制代码


类操作一定要加上 self, 否则就无法调用
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-3 20:28:36 | 显示全部楼层
把代码中的 t. 改为 self.t. ,因为 t 放在类里面就是属于类属性
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-18 17:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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