一、继承的基本语法
在Python中,继承是一种面向对象编程的概念,它允许一个类(称为子类或派生类)继承另一个类(称为父类或基类)的属性和方法。
通过继承,子类可以重用父类的代码,并可以在不修改父类的情况下添加新的属性和方法,或者修改父类已经定义的属性和方法。这种机制提供了代码的可重用性以及层次结构的组织。
——————————————————————————————————————————
举个例子:
#这是直接用名字去继承
class My_father:#这相当于父类,此处不用加括号,也可以加上(object)
def father(self): #定义方法
print('我是你的爸爸')
class my_son(My_father):#这是子类
def son(self):
My_father.father(self) #该步骤调用了父类的方法,从而打印出父类的结果
my_list=my_son()
my_list.son()
还可以通过 super().父类方法() 去继承,更加简洁
class My_father:#这相当于父类
def father(self): #定义方法
print('我是你的爸爸')
class my_son(My_father):#这是子类
def son(self):
super().father()#
my_list=my_son()
my_list.son()
当需要完全继承父类时
class Father(object): # 父类
def __init__(self,name,age):
self.name= name
self.age= age
def myself(self):
print('大家好!我是%s,今年%s岁'%(self.name,self.age))
class Son(Father):#子类
pass#因为完全继承父类的属性和方法,用pass表示空
my_list=Son('zhang',18)#继承父类的同时,需要依次对参数传参
my_list.myself()#大家好!我是zhang,今年18岁
当需要部分继承,且需要增加子类自己的属性时
class Father(object): # 父类
def __init__(self,name,age):
self.name= name
self.age= age
def myself(self):
print('大家好!我是%s,今年%s岁'%(self.name,self.age))
class Son(Father):#子类
def __init__(self,name,age,lenth):#增加了子类自己的属性
super().__init__(name,age)#调用父类的初始化方法
self.lenth=lenth
def myson(self):
print('我身高{}'.format(self.lenth))
mylist=Son("zhang",18,180)
mylist.myself()#大家好!我是zhang,今年18岁
mylist.myson()#我身高180
完全继承, 所有的属性和方法都使用父类的, 子类是不需要任何创建
部分继承, 子类有自己特有的一些属性和方法,需要使用super进行继承并添加
不继承, 全部覆盖重写
二.多继承的相关知识
多继承是指一个类可以同时从多个父类继承属性和方法的能力。
在Python中,可以通过在类定义时同时列出多个父类来实现多继承。
使用多继承可以将多个不同的类的功能组合在一起,使得子类可以同时获得多个父类的特性。这样可以增加代码的复用性,提供更灵活的设计方式。
以下是一个示例代码,演示了多继承的概念:
class Parent1:#第一个类
def method1(self):
print("Method 1")
class Parent2:#第二个类
def method2(self):
print("Method 2")
class Child(Parent1, Parent2): # 子类同时继承了 Parent1 和 Parent2
pass
obj = Child()# 类的实例化 这样可以直接调用两个类的方法
obj.method1() # 调用 Parent1 的方法
obj.method2() # 调用 Parent2 的方法
三.函数类的魔法方法
add_是Python中的一个特殊方法,用于定义对象之间的加法操作。当使用加法运算符(+)来操作两个对象时,解释器会自动调用对象的add方法。
例如,如果我们有两个自定义类的对象,可以通过在类中实现add方法,定义它们之间的加法行为。
那么如何在自定义类中实现add方法呢?举个例子:
class all:
def __init__(self,x,y):#始化该对象
self.x=x
self.y = y
def __add__(self,other):
allnum1=self.x+other.x
allnum2=self.y+other.y
return allnum1,allnum2 #返回,保留,值
#return allnum1+allnum2 如果需要参数相加则可以这样
point1=all(1,2)
point2=all(3,4)
result=point1+point2 #此处的+,相当于调用上面return的内容
print(result)#(4, 6)
#print(result)#10 相当于x1+x2+y1+y2
call是一个Python中的特殊方法,它允许将一个类的实例像函数一样调用。
当调用一个类的实例时,Python会查找并调用该类中的call方法。这个方法可以接收任意数量的参数,并且可以返回任何类型的值。
举个例子:
class list:
def __init__(self, x):
self.x=x
def __call__(self, y):
self.y = y
return self.x + self.y
sum=list(5)
sum2=sum(6)
print(sum2)#第一次传参给x,一次传参给y
print(sum.y)#y的值为6