1、创建类:
创建类:
class classNanme:
<statement-1>
<statement-N>
------------------
class Person:
'''
person defined
'''
def set_name(self, name):
'''
set person name
'''
self.name = name
def show_name(self, name):
'''
set person name
'''
print(self.name)
类包括:类的属性和方法
类内赋值语句会创建类的属性,类属性提供对象的状态和行为
类对象:默认行为,是实例对象的工厂
实例对象:程序处理的实际对象
self总是指调用时的类的实例,是实例的引用变量
2、构造函数
def __init__(self,name,age):
self.name = name
self.age = age
print('constrctor is called')
具有初始化的作用,也就是当该类被实例化的时候就会执行该函数
可以把要先初始化的属性放到这个函数中
3、析构函数
def __del__(self):
<statement>
使用del 删除对象时,会调用他本身的析构函数
当对象在某个作用域中调用完毕,在跳出其作用域的同时析构函数也会被调用一次
构造函数和析构函数一般可以不写
4、运算符重载
以双下划线开头和结尾的,类似于__X__的形式,python通过这种特殊的命名方式来拦截操作符,以实现重载
参考:https://blog.csdn.net/zhangshuaijun123/article/details/82149056
class mynumber:
def __init__(self,v):
self.data = v
def __repr__(self):
return 'hello mynumber(%d)'%self.data
def __add__(self,other):
v = self.data + other.data
return mynumber(v)
n1 = mynumber(100)
n2 = mynumber(200)
n3 = n1 + n2 #n3 = n1.__add__(n2)
print(n3) #mynumber(300)
输出:
hello mynumber(300)
5、类的继承
子类可以继承父类的所有方法和属性,可以重载父类的成员函数及属性
继承树以类对象为中心,向上是其基类,向下是其实例对象。
新式类vs经典类:
新式类:但凡继承object类的子类,以及该子类的子子类,...都称之为新式类
经典类:没有继承object类的子类,以及该子类的子子类,...都称之为经典类
Python 2.x中默认都是经典类,只有显式继承了object才是新式类;Python 3.x中默认都是新式类,不必显式的继承object
可以利用__mro__属性查看继承的顺序;
class A(object):
pass
class B(A):
pass
class C(A):
pass
class D(B):
pass
class E(B):
pass
class F(D,E):
pass
# python支持多重继承,在解析父类的__init__时,定义解析顺序的是子类的__mro__属性,内容为一个存储要解析类顺序的元组
print(F.__mro__)
输出:(<class '__main__.F'>, <class '__main__.D'>, <class '__main__.E'>, <class '__main__.B'>, <class '__main__.A'>, <class 'object'>)
6、类的私有属性