1.python的三大特性:python的三大特性,封装,多态,继承封装:函数 模块 类 对象多态 : python中默认支持多态继承: python中的子类继承父类属性和方法 鸭子类型: 看着像鸭子,它就是鸭子python中处处都是鸭子 # 两者之间没有任何关系,但是都遵循着一个隐形的标准两个类中的鸭子类型:# 优点:1,统一标准,减少了词汇量# 2,两者之间没有任何耦合性,但是可以产生关系,其中一个的对象可以调用另一个类的方法# 其他例子 :index pop clear
2. super的用法:
super(A类,self).方法 跳过A类,按照mro的顺序执行下一类的方法 #可以执行非本类方法的方法必须在有继承关系的类中使用 class A: def eat(self): print(‘eat A‘) class B(A): def eat(self): super(B,self).eat() #跳过B类,按照mro的顺序执行0 print(‘eat B‘) obj = B() obj.eat() print(B.mro()) #[<class ‘__main__.B‘>, <class ‘__main__.A‘>, <class ‘object‘>] #查看mro的顺序 类名+ . + mro +()
3. 类的约束:有两种方法第一种:raise Exception 抛出异常在父类中定义好子类要有的方法
class Payment: def pay(self,money): raise Exception(‘子类要定义pay的方法‘) class A(Payment): def pay(self,money): #Exception: 子类要定义pay的方法 print(111) class B(Payment): def zhifu(self,money): pass def pay(obj,money): obj.pay(money) obj1 = B() pay(obj1,100)
第二种:抽象类 接口类 :制定一个规范,强制子类必须有pay方法,如果没有,在你实例化的时候就会报错
from abc import ABCMeta,abstractmethod class A(metaclass=ABCMeta): #父类里面的抽象方法,子类一定要实现 @abstractmethod#抽象方法 #强制子类执行eat,chi方法,没有就报错 def eat(self,money): print(111) @abstractmethod def chi(self,money): pass class B(A): def eat(self,money): pass class C(A): def eat(self,money): pass def chi(self,money): print(111) def eat(obj,money): obj.chi(money) obj1 = B() eat(obj1,100)
原文地址:https://www.cnblogs.com/shicongcong0910/p/10325049.html
时间: 2024-11-13 18:34:18