类的继承
# 创建一个父类
class Base_father:
def __init__(self,name,age):
self.name = name
self.age = age
print('调用了父类的name')
# 创建子类
class Base_son(Base_father):
def getname(self):
print(f'姓名:{self.name}')
print(f'年龄:{self.age}')
return '运行完毕!!'
num1 = Base_son('suliang',21)
print(num1.getname())
运行结果:
如果重写了__ init __ 时,实例化子类,就不会调用父类已经定义的 __ init __。
# 创建一个父类class Base_father: def __init__(self,name,age): self.name = name self.age = age
print('调用了父类的name')
# 创建子类
class Base_son(Base_father):
def __init__(self,name,age):
self.name = name
self.age = age
print('调用了我自己定义的方法!!')
def getname(self):
print(f'姓名:{self.name}')
print(f'年龄:{self.age}')
return '运行完毕!!'
num1 = Base_son('suliang',21)
print(num1.getname())
如果重写了__ init __ 时,要继承父类的构造方法,可以使用 super关键字。
语法:super(子类,self).__ init __(参数)
# 创建一个父类
class Base_father:
def __init__(self,name,age):
self.name = name
self.age = age
print('调用了父类的name')
# 创建子类
class Base_son(Base_father):
def __init__(self,name,age):
#利用super调用父类的构造函数
super(Base_son, self).__init__(name ,age)
print('-'*50)
self.name = name
self.age = age
print('调用了我自己定义的方法!!')
def getname(self):
print(f'姓名:{self.name}')
print(f'年龄:{self.age}')
return '运行完毕!!'
num1 = Base_son('suliang',21)
print(num1.getname())
class Father:
def __init__(self,name):
self.name = name
def list(self):
print(f'name:{self.name}')
class Son(Father):
def list(self):
print(f'姓名:{self.name}')
return '执行完毕!!'
num1 = Son('suliang')
print(num1.list())
运行结果:
构造函数
__ init __ ( self [,args] )
__ del __( self )
__ repr __( self )
__ str __( self )
__ cmp __ ( self, x )
类的私有属性
class List:
a = 5 #类的公有属性
__b = 6 #类的私有属性
obj = List()
print(obj.a)
print(obj.__b)
运行结果:
在定义方法时,在前面加入 __ (两个下划线)即可定义一个私有方法,只能在类的内部调用,语法为self.__方法名
class List:
def __init__(self ,a,b ):
self.a = a
self.b =b
def pri1(self):
# 定义一个公有方法
print(f'{self.a + self.b}')
return ' '
def __pri2(self):
# 定义一个私有方法
print(f'{self.a *self.b}')
def pri3(self):
self.__pri2() # 在内部调用私有方法
return ' '
obj = List(5,10)
print(obj.pri1())
print(obj.pri3())
运行结果:
小结
本篇文章带大家了解了类的继承,方法的重写以及重载的内容。一顿操作下来是不是觉得并不难呢,当然这都是基础语法,深入的还需大家理解这其中的内涵,再慢慢的去实践。
联系客服