封装
‘’’
封装是将类的某些部分(某些属性或者方法)隐藏起来
对象不能直接使用隐藏起来的属性或者方法,具有保护功能
‘’’
class Girl():
def init(self,name,age):
self.name=name
self.__age=age
def show(self):
print(self.name,self.__age)
zs=Girl(‘张三’,19)
zs.show()
print(zs.__age) #类外边 对象不能直接使用
class Girl():
def init(self):
pass
def setAge(self,age):
if age<0 or age>95:
print(‘来自星星的你’)
self.age=0
else:
self.age=age
def getAge(self):
return self.age
zs=Girl()
zs.setAge(20)
print(zs.getAge())
zs.age=-9
print(zs.getAge())
class Girl():
def init(self,name,age):
self.name=name
self.__age=age
def setAge(self,age):
if age<0 or age>95:
print(‘来自星星的你’)
self.__age=18
else:
self.__age=age
def getAge(self):
return self.__age
zs=Girl(‘张三’,20)
zs.setAge(21)
print(zs.getAge())
print(zs.dict)
zs.__age=99
print(zs.dict)
class A():
def init(self,age):
self.__age=19
def setAge(self,age):
self.__age=age
def str(self):
return str(self.__age)
a=A(1)
a.__age=100
print(a.dict)
print(a._A__age)
a._A__age=99
print(a.dict)
class Phone():
def test(self):
print(‘test1’)
def __test1(self):
print(‘test1’)
x=Phone()
x.test()
x.__test1
中间界
class Phone():
def __phone(self):
print(“正在拨打电话”)
def phone(self,m):
if m>30:
self.__phone()
else:
print(‘请先给你的手机缴费30块 再来打电话’)
x=Phone()
x.phone(38)
‘’’
私有化封装后的限制
类中 可以访问
类外/对象外 不能访问
子类/子类对象 不能访问
‘’’
‘’’
继承的作用是提高代码的重用率
‘’’
class Cat():
def init(self,name,age,sex):
self.name=name
self.age=age
self.sex=sex
def jiao(self):
print(‘叫’)
def eat(self):
print(‘吃’)
def climb(self):
print(‘爬’)
class Dog():
def init(self,name,age,sex):
self.name=name
self.age=age
self.sex=sex
def jiao(self):
print(‘叫’)
def eat(self):
print(‘吃’)
def swimming(self):
print(‘游泳’)
a=Cat(‘加菲猫’,2,‘母’)
a.climb()
-----------
class Animal(): #父类 cat dog 子类
def init(self,name,age,sex):
self.name=name
self.age=age
self.sex=sex
def jiao(self):
print(‘叫’)
def eat(self):
print(‘吃’)
class Cat(Animal):
def climb(self):
print(‘爬’)
class Dog(Animal):
def swimming(self):
print(‘游泳’)
a=Cat(‘加菲猫’,2,‘母’)
# a是类的实例化
a.eat()
a.climb()
b=Dog(‘金毛’,3,‘公’)
b.eat()
b.swimming()
print(Cat.bases)
print(Dog.bases)
print(Animal.bases)
‘’’
如果一个类没有父类 那么它就默认继承 object类
‘’’
‘’’
方法的覆写:子类中定义了和父类中相同的方法函数def,我们叫做方法的覆写
实例对象调用次方法的时候就会调用自己类中的方法了
也叫 重写 复写 重载
‘’’
class A():
def hehe(self):
print(‘A,呵呵’)
class B(A):
def hehe(self):
print(‘B,呵呵’)
a=A()
b=B()
a.hehe()
b.hehe()
super()
‘’’
super()
子类和父类有相同的方法 如果子类想调用父类的方法
‘’’
class Animal():
def init(self,name,age):
self.name=name
self.age=age
class Cat(Animal):
def init(self,name,age,speed):
self.speed=speed
super().init(name,age)
def jiao(self):
print(‘喵喵%d’%self.speed)
class Dog(Animal):
def init(self,name,age,height):
self.height=height
super().init(name,age)
def jiao(self):
print(‘汪汪%.2f’%self.height)
a=Cat(‘波斯’,3,233)
d=Dog(‘京巴’,4,1.78)
a.jiao()
d.jiao()
super()
class A():
num=3
__num1 = 2
def init(self,x,y):
self.x=x
self.y=y
class B(A):
num=10
def init(self,x,y,z):
self.z=z
super().init(x,y)
b=B(1,2,3)
print(b.x)
print(B.num)
print(A.num)
print(super(B,b).num)
class A():
def t1(self):
print(‘A:t1’)
class B():
def t2(self):
print(‘A:t2’)
class C(A,B):
def t3(self):
print(‘A:t3’)
c=C()
c.t1()
c.t2()
c.t3()
class A():
def tx(self):
print(‘A:t1’)
class B():
def tx(self):
print(‘B:t2’)
class C(B,A): # 重写 优先使用B
def t(self):
print(‘C:t3’)
c=C()
c.t()
c.tx()
class A():
def func(self):
print(‘A开始’)
print(‘A结束’)
class B(A):
def func(self):
print(‘B开始’)
super().func()
print(‘B结束’)
class C(A):
def func(self):
print(‘C开始’)
super().func()
print(‘C结束’)
class D(B,C):
def func(self):
print(‘D开始’)
super().func()
print(‘D结束’)
d=D()
print(d.func())
class A():
def init(self):
print(‘A开始’)
print(‘A结束’)
class B(A):
def init(self):
print(‘B开始’)
super().init()
print(‘B结束’)
class C(A):
def init(self):
print(‘C开始’)
super().init()
print(‘C结束’)
class D(B,C):
def init(self):
print(‘D开始’)
super().init()
print(‘D结束’)
d=D()
print(D.mro())