|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
在46讲的习题中,小甲鱼给出的代码是:
import time
class Record:
def __init__(self, initval=None, name=None):
self.val = initval
self.name = name
self.filename = "record.txt"
def __get__(self, instance, owner):
with open(self.filename, 'a', encoding='utf-8') as f:
f.write("%s 变量于北京时间 %s 被读取,%s = %s\n" % \
(self.name, time.ctime(), self.name, str(self.val)))
return self.val
def __set__(self, instance, value):
filename = "%s_record.txt" % self.name
with open(self.filename, 'a', encoding='utf-8') as f:
f.write("%s 变量于北京时间 %s 被修改, %s = %s\n" % \
(self.name, time.ctime(), self.name, str(value)))
self.val = value
有如下一些疑惑:
1. 在运行的时候,是不是也要也要设置某个类,其中该类的有个属性是Record类,也就是
class C:
x=Record()
2. filename = "%s_record.txt" % self.name这个语句有什么用?
3.如果:
c=C()
c.x=8
d=C()
那问什么d.x也是8呢?
4. Record类中的初始化是不是只是在
Class C:
x=Record()
的时候被调用。这样的话,3中的c,d实际上就不能被赋予不同的初始化值。我写这样的代码
class E:
def __init__(self,init=None,name=None):
self.x=Record(init,name)
然后e=E(100,'china'),那为什么e.x返回的只是对象的地址,而e.x.val才能够返回100.谢谢
c.x and d.x 是同一个对象,即x , 它们返回的都是x.val
|
|