标签:python
Python一切皆对象(object),每个对象都可能有多个属性(attribute)。
#现在我们来总结下所有的系统定义属性和方法, 先来看下保留属性:
>>> Class1.__doc__ # 类型帮助信息 'Class1 Doc.'
>>> Class1.__name__ # 类型名称 'Class1'
>>> Class1.__module__ # 类型所在模块 '__main__'
>>> Class1.__bases__ # 类型所继承的基类 (<type 'object'>,)
>>> Class1.__dict__ # 类型字典,存储所有类型成员信息。 <dictproxy object at 0x00D3AD70>
>>> Class1().__class__ # 类型 <class '__main__.Class1'>
>>> Class1().__module__ # 实例类型所在模块 '__main__'
>>> Class1().__dict__ # 对象字典,存储所有实例成员信息。 {'i': 1234}
对象的属性储存在对象的__dict__属性中。__dict__为一个词典,键为属性名,对应的值为属性本身。
class Bird:
"""鸟类父类"""
have_feather = True
way_of_reproduction = "egg"
song="叽叽喳喳"
def sing(self):
print(self.song)
def move(self):
print("飞飞飞飞飞")
class Chicken(Bird):
"""鸟类子类"""
song="喔喔喔喔喔!"
def __init__(self,name):
self.name=name
def move(self):
print("跑跑跑跑跑")
myChicken=Chicken("aQ")
print(Bird.__dict__)
print(Chicken.__dict__)
print(myChicken.__dict__)输出
{'move': <function Bird.move at 0x02FDB2B8>, 'have_feather': True, 'way_of_reproduction': 'egg', '__module__': '__main__', '__weakref__': <attribute '__weakref__' of 'Bird' objects>, 'song': '叽叽喳喳', '__dict__': <attribute '__dict__' of 'Bird' objects>, '__doc__': '鸟类父类', 'sing': <function Bird.sing at 0x02FDB270>} #父类的属性
{'move': <function Chicken.move at 0x02FDB348>, '__module__': '__main__', '__init__': <function Chicken.__init__ at 0x02FDB300>, 'song': '喔喔喔喔喔!', '__doc__': '鸟类子类'} #子类的属性
{'name': 'aQ'} #对象属性class Test: def __init__(self): self.__x=None def getx(self): return self.__x def setx(self,value): self.__x=value def delx(self): del self.__x x=property(getx,setx,delx,'')property函数原型为property(fget=None,fset=None,fdel=None,doc=None),所以根据自己需要定义相应的函数即可。
class C: def __init__(self): self.__x=None @property def x(self): return self.__x @x.setter def x(self,value): self.__x=value @x.deleter def x(self): del self.__x同一属性的三个函数名要相同。调用的时候 对象.x就可以了
class test():
"property应用举例"
def __init__(self,value):
self.value=value
def getValue(self):
print("自动调用取值")
return self.value
def setValue(self,value):
print("自动执行赋值")
if value>100:
self.value=100
print("值大于100则赋值为100")
else:
self.value=value
def delValue(self):
del(self.value)
print("删除成功")
num=property(getValue,setValue,delValue,'测试')
a=test(3)
print(a.num)
a.num=200
print(a.value)
del(a.num)输出
自动调用取值 3 自动执行赋值 值大于100则赋值为100 100 删除成功
上一讲:Python菜鸟晋级05----with....as....(上下文管理器)
下一讲:
标签:python
原文地址:http://blog.csdn.net/a359680405/article/details/42611523