0、复习
继承 (了解)
抽象类和接口类 from abc import ABCMeta,abstractmethod
python中没有内置 接口的概念,所有的抽象类和接口类都是用来规范子类的
接口类和抽象类不能被实例化
多态 (了解)
java中的多态和python中的鸭子类型
在某些强数据类型语言中,
归一化设计(函数的参数的问题上),需要传递参数的数据类型
为了几个类的对象都可以作为参数传递给函数,
就给这几个类创建一个父类,这样的话让父类成为这个参数的数据类型
子类的所有对象就都能够作为参数传递了
在python中,传递参数的时候,是弱数据类型特征,不需要指定参数的数据类型
鸭子类型 (list tuple str)
多个有相似特征的数据类型之间,不通过继承建立关系.
而是通过一种约定俗成的制度来约束
list tuple str ---> 序列
1、封装
封装
广义上的封装 : 属于一个类的静态和动态属性 总是出现在一个类中
使用的使用永远用类名或者对象名调用
狭义上的封装 : 就是把变量\方法私有化,在类的外部以及子类中不能直接使用了
class A: STATIC = ‘aaa‘ # 静态变量 __S = ‘bbb‘ # 私有的静态变量 def wahaha(self): print(A.__S) # _A__S print(A.STATIC) print(A.__dict__) print(A._A__S) # 在类的外面调用私有的变量 a = A() a.wahaha() A.__B = ‘ccc‘ #在类的外部添加了一个静态变量 print(A.__dict__) #我们不能在一个类的外部创建一个"私有的"变量 print(A.__B)
class B: def __init__(self,name,pwd): self.name = name self.__pwd = pwd # 也可以创建对象的私有属性 def qqxing(self): self.__a = ‘A‘ # _B__a def get_pwd(self): print(self.__pwd) b = B(‘alex‘,‘alex3714‘) b.qqxing() print(b.name) print(b._B__pwd) # 当在类外部的时候,我们也不能直接使用对象的私有属性 b.get_pwd()
私有的 静态变量 对象属性 方法
私有的 只能在类的内部定义和使用
__名字
在类外部使用私有静态变量 _类名__私有的名字
私有的名字 不能被子类继承
java
private 私有的 - __变量名
protect 保护的 - N/A
public 公共的 - 正常的变量
class Room: def __init__(self,owner,price,length,width,height): self.owner = owner self.__price_single = price #单价 self.__length = length self.__width = width self.height = height def get_area(self): return self.__length * self.__width def get_price(self): return self.__price_single * self.get_area() alex = Room(‘alex‘,1000000,2,1,0.8) print(alex.get_area()) print(alex.get_price())
2、内置函数property
通过将内置函数 property作为装饰器 @property 来实现将一个方法(函数)伪装成属性
3、
4、