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("鱼")
这是动物类
动物吃东西
这是狗类
动物吃东西
小狗爱吃骨头
动物吃东西
小狗爱吃鱼