Python类专有方法
Python除了自定义私有变量和方法外,还可以定义专有方法。专有方法是在特殊情况下或使用特殊语法时由python调用的,而不是像普通方法一样在代码中直接调用。看到形如__XXX__的变量或函数名时就需要注意下
__init__ : 构造函数,在生成对象时调用
__del__ : 析构函数,释放对象时使用
__repr__ : 打印,转换
__setitem__ : 按照索引赋值
__getitem__: 按照索引获取值
__len__: 获得长度
__cmp__: 比较运算
__call__: 函数调用
__add__: 加运算
__sub__: 减运算
__mul__: 乘运算
__div__: 除运算
__mod__: 求余运算
__pow__: 乘方
__del__:删除对象
例:在类中对__pow__、__cmp__进行运算符重载,主要对的两个成绩进行平方运算、比较两个成绩
class person(object):
def __init__(self,name,chengji):
self.chengji=chengji
self.name=name
def __pow__(self, power, modulo=None):
return pow(self.chengji,2)
# print(pow(self.chengji,2))
def __cmp__(self, s):
if (self.chengji < s.chengji):
return s.chengji
if (self.chengji > s.chengji):
return self.chengji
if (self.chengji == s.chengji):
return "二者相等"
person1=person("小明",99)#实例化对象
person2=person("小红",88)#实例化对象
print(pow(person1,2))
print(person2.__cmp__(person1))
动态给实例添加属性和方法
例:动态给类添加方法,具体是对猫的类中没有设置奔跑的方法,在类外添加这个方法,并是打印显示
#创建类
#动态给实例添加属性和方法
from types import MethodType
class Cat():
def __init__(self,name):
self.name=name
cat1=Cat("大花猫")
def run(self):
print(self.name+"跑跑跑")
cat1.run=MethodType(run,cat1)
cat1.run()
property
#property:可以让你对受限制访问的属性使用点语法
property() 函数的作用是在新式类中返回属性值
1.语法:
class property([fget[, fset[, fdel[, doc]]]])
2.参数:
fget -- 获取属性值的函数
fset -- 设置属性值的函数
fdel -- 删除属性值函数
doc -- 属性描述信息
3.方法:
property对象有三个方法getter(), setter()和delete(),用来在对象创建后设置fget,fset和fdel。
4.返回值:返回新式类属性