魔法方法和模块
1.魔法方法关于属性访问的应用
>>> class C:
def __init__(self,size=10):
self.size=size
def getSize(self):
return self.size
def setSize(self,value):
self.size=value
def delSize(self):
del self.size
x=property(getSize,setSize,delSize)
>>>
>>> c=C()
>>> c.x=1
>>> c.x
1
>>> c.size
1
>>> del c.x
>>> c.size
Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
c.size
AttributeError: 'C' object has no attribute 'size'
>>> class C:
def __getattribute__(self,name):
print('getattrbute')
return super().__getattribute__(name)
def __getattr__(self,name):
print('getattr')
def __setattr__(self,name,value):
print('setattr')
super().__setattr__(name,value)
def __delattr__(self,name):
print('delattr')
super().__delattr__(name)
>>>
>>>
>>> c=C()
>>> c.x
getattrbute
getattr
>>> c.x=1
setattr
>>> c.x
getattrbute
1
>>> del c.x
delattr
2.描述符:将某种特殊类型的类的实例指派给另一个类的属性。
3.模块:
导入模块
def c2f(cel):
fah=cel*1.8+32
return fah
def f2c(fah):
cel=(fah-32)/1.8
return cel
import temperature as tc
print ('32摄氏度=%.2f华氏度'%tc.c2f(32))
print ('99华氏度=%.2f摄氏度'%tc.f2c(99))
==
32摄氏度=89.60华氏度
99华氏度=37.22摄氏度
4.if name== ‘main’
def c2f(cel):
fah=cel*1.8+32
return fah
def f2c(fah):
cel=(fah-32)/1.8
return cel
def test():
print('测试,0摄氏度=%.2f华氏度'%c2f(0));
print('测试,0华氏度=%.2f摄氏度'%f2c(0));
test()