面向对象
面向对象思想
面向过程和面对对象的区别是什么?
答: 复用性高,面向对象
类的定义和使用
类型里面的定义的时候 self 不能省去,应该写出
class person:
def __init__(self,name,age):
print("====初始化开始啦========")
self.age = age
self.name = name
print("=====初始化结束啦==========")
def show(self):
print("我的名字是:",self.name)
print("我的年龄是:",self.age)
llz=person("李立宗",42)
llz.show()
ln=person("刘能",58)
ln.show()
x=person("Xman",18)
x.show()
继承
class people:
def talk(self):
print("hello world")
class teacher(people):
def teach(self):
print("上课,上课,python")
class actor(people):
def act(self):
print("我是演员,演戏、演戏")
zs=people()
zs.talk()
lilizong=teacher()
lilizong.talk()
lilizong.teach()
liuneng=actor()
liuneng.talk()
liuneng.act()
等于是一个公共部分的功能,被其他函数调用
封装
class guaishou:
def __init__(self,name,weight,height):
#必须包含self参数,初始化
print("Hello,准备工作")
self.name = name
self.weight = weight
self.height = height
print("Hello 初始化结束")
def show(self):
print("Hello ,我来了:")
print("我的名字是:",self.name)
print("我的体重是:",self.weight)
print("我的身高是:",self.height)
bianhao666=guaishou("小白",80,180)
bianhao666.show()
多态
class people:
def talk(self):
print("大家好")
class teacher(people):
def talk(self):
print("同学们好")
class student(people):
def talk(self):
print("老师好")
xiaogang=people()
xiaogang.talk()
lilizong=teacher()
lilizong.talk()
cuihua=student()
cuihua.talk()
访问控制
class people:
def __init__(self,name,age):
self.name = name
self.__age = age
def show(self):
print("我的名字是:",self.name)
print("我的年龄是:",self.__age)
def setAge(self,age):
if age<0:
print("年龄不符合")
else:
self.__age=age
def getAge(self):
# print("我的年龄是:",self.__age)
return self.__age
llz=people("李立宗",18)
llz.setAge(42)
print(llz.getAge())
# __age私有变量,很好地实现了隐藏,
# 无论是使用age访问,还是__age访问,都无法访问到类内部的__age
# 实现了高级封装
# 如果真的非常必要要访问__age,访问的方式是:对象._people__age
# 访问类内部的私有成员,是非常非常不建议这么做的。
参考视频
https://edu.csdn.net/learn/35464/529478?spm=3001.4143