Bootstrap

python--内部类和隐藏方法、类继承、多态

1、内部类和隐藏方法

偶尔使用的类可以作为内部类,减轻代码工作量
不希望在对象实例中被访问的方法就是隐藏方法,通过在方法名称前加__前缀就可以实现隐藏方法

class student:
    def __init__(self,name,no):
        self.name=name
        self.no=no
        self.laptop=self.Laptop()
    def show(self):
        print(self.name,self.no)
    #内部方法隐藏
    def __show2(self):
        print("\n")
    class Laptop:
        def __init__(self):
            self.brand="DELL"
            self.cpu="i7"
            self.ram="16G"
tom=student("tom",1825)
tom.show()
print(tom.laptop)
print(tom.laptop.brand)
print(tom.laptop.cpu)

tom 1825
<__main__.student.Laptop object at 0x000001DC62922F10>
DELL
i7
2、类的继承

实现代码的重用,相同的代码不需要重复的编写

继承的传递性

  • C类从B类继承,B类又从A类继承 那么C类就具有B类和A类的所有属性和方法
  • 子类拥有父类以及父类的父类中封装的所有属性和方法

子类继承父类,可以直接享受父类中已经封装好的方法,不需要再次开发

方法的重写
当父类的方法实现不能满足子类的需求时,可以对方法进行重写

多继承

3、多态
  • #多态,不同的类中,有相同的方法,eat()
  • #多态,同一个类中,相同的函数,参数不一样,出现不同的状态

多态可以增加代码的灵活度
以继承和重写父类方法为前提
是调用方法的技巧,不会影响到类的内部设计

class animal:
    def __init__(self):
        print("这是动物类")
    def eat(self):
        print("动物吃东西")
#继承
class dog(animal):
    def __init__(self):
        print("这是狗类")
    #方法的重写
    def eat(self,x=None):
        #调取父类的方法
        #覆盖,保留新的功能(使用super),增添新的功能(小狗爱吃骨头)
        super().eat()
        if x==None:
            print("小狗爱吃骨头")
        else:
            print("小狗爱吃"+str(x))
#多态,不同的类中,有相同的方法,eat()
#多态,同一个类中,相同的函数,参数不一样,出现不同的状态
dog1=animal()
dog1.eat()

dog1=dog()
dog1.eat()
dog1.eat("鱼")

这是动物类
动物吃东西
这是狗类
动物吃东西
小狗爱吃骨头
动物吃东西
小狗爱吃鱼
;