1、格式:
class 子类名(父类名1,父类名2,...):
"""docstring for this class""" #类的文档字符串
def __init__(self[, arg1, arg2, ...]): #构造函数
#constructor block;
def __del__(self): #析构函数
#destructor block;
def functionName(self[, ......]): #自定义函数
'''docstring for this function''' #函数的文档字符串
#code block;
......
2、self:
每 个对象都有一个名为self的内置属性,它指向当前对象本身,类似于C++和Java中的this指针,在声明类的成员函数时,函数的参数列表中最左边的 第一个参数就是self,但是在调用时,成员函数的实参不能使用self,这个内置的属性成员由Python的解释器系统使用,自动为对象填充;
3、构造函数:
Python类的构造函数名为__init__
,且"init"前后都是双下划线;该函数在创建对象时自动被调用;类似于C++中类的构造函数;
4、析构函数:
Python类的构造函数名为__del__
,且"del"前后都是双下划线;该函数在销毁对象时自动被调用;类似于C++中类的析构函数;若想要指明该函数被调用,就要使用del语句来销毁对象;
5、特殊标识符:
以单下划线开头的标识符:代表不能直接访问的类属性,需要通过类提供的接口进行访问,也不能通过语句"from xxx import *
"来导入;例如:_foo
;
以双下划线开头的标识符:表示该标识符是类的私有成员;例如:__foo
;
以双下划线开头和结尾的标识符:表示该标识符是类里特殊方法的专用标识;例如:__init__()
是类的构造函数;
二、特殊属性
1、__doc__
:
该属性可分别用于类和成员函数中;用于类中时,可以保存类的文档字符串;用于函数时,可以保存函数的文档字符串;
2、__class__
:
用于存放当前对象实例所属的类名;
三、特殊方法
Python类中,除了构造函数__init__
和析构函数__del__
之外,还有下面的一些待实现的特殊方法:
1、基本方法:__new__(className[,*targs,**kwargs])
:静态方法,用于创建类className
的实例;它在__init__
之前被调用;通常用在设置不变数据类型的子类;__str__(self)
:当前对象被字符串化时被调用;内建函数str(self)
函数,或print(self)
的调用;__repr__(self)
:运行时的字符串输出;内建函数repr(self)
或操作符"self
"的调用;__unicode__(self)
:Unicode字符串输出;内建函数unicode(self)的被调用;__len__(self)
:求出当前对象的长度;内建函数len(self)的调用;__call__(self,*args)
:把当前对象当成函数调用,表示可调用的实例;__nonzero__(self)
:为当前对象实例定义False值;内建函数bool(self)的调用;__bool__(self)
:当前对象的真值测试;内建函数bool(self)
的调用;__dir__(self)
:列出当前对象的多有属性和方法;内建函数dir(self)的调用;__format__(self,format_spec)
:格式化字符串的输出;
2、关系运算符重载:__cmp__(src,dst)
:两个对象进行比较;内建函数cmp(src,dst)的调用;__lt__(self,other)
:判断对象self是否小于对象other;重载运算符"<"或"lt";__le__(self,other)
:判断对象self是否小于等于对象other;重载运算符"<="或"le";__gt__(self,other)
:判断对象self是否大于对象other;重载运算符">"或"gt";__ge__(self,other)
:判断对象self是否大于等于对象other;重载运算符">="或"ge";__eq__(self,other)
:判断对象self是否等于对象other;重载运算符"=="或"eq";__ne__(self,other)
:判断对象self是否不等于对象other;重载运算符"!="或"ne";
3、属性操作:__getattr__(self,attr)
:获取属性attr;内建函数self.getattr(attr)
的调用,仅当属性没找到时才被调用;__setattr__(self,attr,val)
:设置属性attr;内建函数self.setattr(self,attr,val)
的调用;__delattr__(self,attr)
:删除属性attr;内建函数self.delattr(attr)
时被调用;__getattribute__(self,attr)
:获取属性attr;内建函数self.getattr(attr)
的调用,它总是被调用;__get__(self,attr)
:获取属性描述符;__set__(self,attr)
:设置属性描述符;__delete__(self,attr)
:删除属性描述符;
4、算数运算符重载:__add__(self,obj)
:加法运算self+obj
;__sub__(self,obj)
:减法运算self-obj
;__mul__(self,obj)
:乘法运算self*obj;
__div__(self,obj)
:除法运算self/obj
;__truediv__(self,obj)
:True除;除法运算self/obj
;__floordiv__(self,obj)
:Floor除;除法运算self//obj
;__mod__(self,obj)
:取模/取余;模运算self%obj
;__divmod__(self,obj)
:除和取模;内建divmod()
;__pow__(self,obj[,mod])
:取模/取余;内建pow()
;幂运算符"**
";__radd__(self,obj)
:加法运算self+obj
;__rsub__(self,obj)
:减法运算self-obj
;__rmul__(self,obj)
:乘法运算self*obj
;__rdiv__(self,obj)
:除法运算self/obj
;__rtruediv__(self,obj)
:True除;除法运算self/obj
;__rfloordiv__(self,obj)
:Floor除;除法运算self//obj
;__rmod__(self,obj)
:取模/取余;模运算self%obj
;__rdivmod__(self,obj)
:除和取模;内建divmod()
;__rpow__(self,obj[,mod])
:取模/取余;内建pow()
;幂运算符"**
";__iadd__(self,obj)
:加法运算self+=obj
;__isub__(self,obj)
:减法运算self-=obj
;__imul__(self,obj)
:乘法运算self*=obj
;__idiv__(self,obj)
:除法运算self/=obj
;__itruediv__(self,obj)
:True除;除法运算self/=obj
;__ifloordiv__(self,obj)
:Floor除;除法运算self//=obj
;__imod__(self,obj)
:取模/取余;模运算self%=obj
;__ipow__(self,obj[,mod])
:取模/取余;内建pow();幂运算符"**
";