重写
如果你的父类方法的功能不能满足你的需求,你可以在子类重写你父类的方法:
举例:
#父类Vehicle
class Vehicle(object):
def __init__(self,name): #对象属性
self.name = name
print("我是交通工具(父类)")
def function(self):
print("交通工具可以带人类到达任何想去的地方")
from vehicle import Vehicle
#子类Bus
class Bus(Vehicle):
def __init__(self):
print("我是大客车(子类)")
def function(self):
print("大客车可以载人到达任何一个地方")
运行结果:
super()函数
super() 函数是用于调用父类(超类)的一个方法
super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。
下面是代码示例:
class Animal:
def __init__(self,name,sex,leg):
self.name = name
self.sex = sex
self.leg = leg
def eat(self,food):
print('%s喜欢吃%s'%(self.name,food))
from animal import Animal
class Cat(Animal): #cat类继承animal类
def __init__(self,name,sex,leg,tail): #定义初始化构造函数,但是比父类多一个参数
#animal.__init__(self,name,sex,leg)
super().__init__(name,sex,leg) #调用父类的初始化构造函数
self.tail=tail
print('猫有%s腿,和%s条tail'%(self.leg,self.tail))
from animal import Animal
from cat import Cat
thiscat = Cat('猫','小仙女',4,1)
thiscat.eat('老鼠')
property
1.Python内置的@property装饰器就是负责把一个方法变成属性调用的;
2.@property本身又创建了另一个装饰器@state.setter,负责把一个setter方法变成属性赋值,于是,我们就拥有一个可控的属性操作;
3.@property广泛应用在类的定义中,可以让调用者写出简短的代码,同时保证对参数进行必要的检查,这样,程序运行时就减少了出错的可能性。
运算符重载
常见运算符重载方法
构造函数和折构函数:_init_和 del
它们的主要作用是进行对象的创建和回收。
当实例创建时,就会调用__init__构造方法。
当实例对象被收回时,析构函数__del__会自动执行。
加减运算:add和_sub
重载这两个方法就可以再普通的对象上添加+ -运算符操作。
对象的字符串表达形式:repr__和__str
这两个方法都是用来表示对象的字符串表达形式:print()、str()方法会调用到__str__方法,print()、str()和repr()方法会调用__repr__方法。