Python学习 :面向对象(二)
程序员文章站
2022-06-24 14:25:14
面向对象的三大特性 一、封装 把数据、值、变量放入到对象中 构造方法 _init_方法 特殊作用: 在 obj = 类名() 执行时: 内部自动执行两个步骤: 1、创建对象 2、通过对象执行类中的一个特殊方法(_init_方法) 二、继承 1、继承 -- 子类继承父类,或称派生类继承基类< /spa ......
面向对象的三大特性
一、封装
把数据、值、变量放入到对象中
构造方法 _init_方法
特殊作用: 在 obj = 类名() 执行时: 内部自动执行两个步骤:
1、创建对象
2、通过对象执行类中的一个特殊方法(_init_方法)
class info:
def __init__(self,name,age):
self.name = name
self.age = age
self.gender = '男'
def show(self):
print(self.name,self.age,self.gender)
alex = info('alex',20)
alex.show()
mike = info('mike',23)
mike.show()
===>alex 20 男
===>mike 23 男
二、继承
1、继承
-- 子类继承父类,或称派生类继承基类< /span>
class grandfather:
def plus(self):
print("添加")
class father(grandfather): # 父类(基类)
def add(self):
print("增加")
def delete(self):
print("删除")
class son(father): # 子类(派生类)
def get(self):
pass
s = son()
s.add()
s.plus()
===>增加
===>添加
2、重写
-- 防止执行父类中的某些方法
class father: # 父类(基类)
def add(self):
print("父类中的增加")
def delete(self):
print("父类中的删除")
class son(father): # 子类(派生类)
def delete(self):
print("子类中的删除") # 默认不再执行父类中的方法
s = son()
s.add()
s.delete() # 此时子类不再继承父类中的delete方法,而是调用子类自己的方法
===>父类中的增加
===>子类中的删除
3、扩展
-- 即执行父类中的方法,也执行子类自己的方法
class requesthandler:
def get(self):
print("父类中的获取")
class baserequest(requesthandler):
def get(self):
super(baserequest, self).get() # 执行父类中的方法
#requesthandler.get(self) 与super方法效果一样,但更推荐使用euper方法
print("子类中的获取")
obj = baserequest()
obj.get() # 此时方法会执行父类中的方法,再执行子类的方法
===>父类中的获取
===>子类中的获取
4、多继承
-- 子类会根据左侧优先原则,在第一个父类中寻找方法,在找不到的情况下在去父类的父类中寻找
-- 当父类有同一个根时,根会在最后才执行
class base:
def a(self):
print('base')
class f0(base):
def a1(self):
print('f0')
class f1(f0):
def a1(self):
print('f1')
class f2(base):
def a(self):
print('f2')
class s(f1,f2):
pass
obj = s()
obj.a()
===> f2
三、多态
python 原生即为多态,不需要过多进行处理