在类的定义中引入模块好像不能用
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 模块放到了类定义的内部之后,好像没有办法调用相应的函数这是为啥呀???{:9_230:} 写 Record.函数 或 self.函数 或 cls.函数 永恒的蓝色梦想 发表于 2020-5-3 16:45
写 Record.函数 或 self.函数 或 cls.函数
我写了一下好像还是不行, liliya 发表于 2020-5-3 16:47
我写了一下好像还是不行,
为啥必须要放在外面啊,不是特别懂 liliya 发表于 2020-5-3 16:48
为啥必须要放在外面啊,不是特别懂
代码发上来 永恒的蓝色梦想 发表于 2020-5-3 16:52
代码发上来
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' class A():
import os
global os
a = A()
print(os.getcwd())
刚刚试了一下,应该是像函数一样要global吧 _荟桐_ 发表于 2020-5-3 17:39
刚刚试了一下,应该是像函数一样要global吧
刚试了一下,你说的对的,不过不太明白为什么,在类定义里面的话不是相当于一个类的属性了吗? liliya 发表于 2020-5-3 17:45
刚试了一下,你说的对的,不过不太明白为什么,在类定义里面的话不是相当于一个类的属性了吗?
一个类的属性是类属性,就要用类名或实例名+属性名访问
或者直接global也行 试试这样??
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())) 本帖最后由 _2_ 于 2020-5-3 19:12 编辑
liliya 发表于 2020-5-3 17:45
刚试了一下,你说的对的,不过不太明白为什么,在类定义里面的话不是相当于一个类的属性了吗?
你可以试试这样:
class A:
def __init__(self):
self.lib = __import__("time")
类操作一定要加上 self, 否则就无法调用 把代码中的 t. 改为 self.t. ,因为 t 放在类里面就是属于类属性
页:
[1]