--封装:
定义:隐藏对象对象中一些不希望外部访问到的属性或方法。
python封装分为两种:公用和私用
公用:特点是没有下划线,在类的内外部以及子类都可以使用。
私用:特点是前方有下划线,只能在本类内部是使用,类的外部以及子类都无法使用。
#数据封装 class Life(): def __init__(self,name,age): self.name=name self.age=age #方法封装 class Life(): def __init__(self,name,age): self.name=name self.age=age def getname(self): return self.age #s私有变量 __变量名=值(双下划线) class Life(): def __init__(self,name,age): self.__name=name self.age=age def getage(self): return self.age def getname(self): print(self.__name) if __name__ == '__main__': s=Life('zs',12) print(s.age) # print(s.__name)#这里无法调用__name,但是通过s.getname()可以在内部调用 s.getname()
#s私有方法 __方法名(双下划线) class Life(): def __init__(self,name,age): self.__name=name self.age=age def __getage(self): print("你好") def getname(self): self.__getage() if __name__ == '__main__': s=Life('zs',12) # s.__getage()#无法获取因为是私有可以通过s.getname()内部调用 s.getname()#你好
继承:类的继承是面向对象程序设计的一个重要思想,继承时子类可以继承父类的内容,包括成员变量和成员函数。
class father(): def name(self): print("我是父类1") def age(self): print("我是父类age") class son(father):#这里就是继承了父类 def a(self): print("我是子类1") if __name__ == '__main__': s=son() s.name()#我是父类1
也存在多继承
class father(): def name(self): print("我是父类1") def age(self): print("我是父类age") class father1(): def money(self): print("我是新父类") class son(father,father1):#这里就是继承了父类 def a(self): print("我是子类1") if __name__ == '__main__': s=son() s.name()#我是父类1 s.money()#我是新父类
--多态
1、多态是以继承和重写父类方法为前提,对所有子类实例化产生的对象调用相同的方法,执行产生不同的执行结果。
2、例如同样是人,但是当问起一个人的职业时会有不同的结果,可能是软件测试工程师,可能是HR
3、一个对象的属性和行为不是由他所继承的父类决定的,而是由其本身包含的属性和方法决定的。
class Animal(object): def a(self): print("我是动物") class Cat(Animal): def a(self):#这里是继承了Animal并重新编译了Animal的函数 print("我是猫") c=Cat() c.a()#我是猫