1,内容回顾
2,接口类
from abc import abstractmethod,ABCMeta
class Payment(metaclass=ABCMeta):
@abstractmethod
def pay(self,money):pass
class Wechat(Payment):
def pay(self,money):
print('已经用微信支付了%s元'%money)
class Alipay(Payment):
def pay(self,money):
print('已经用支付宝支付了%s元' % money)
class Applepay(Payment):
def pay(self,money):
print('已经用applepay支付了%s元' % money)
def pay(pay_obj,money):
pay_obj.pay(money)
app = Applepay()
p = Payment()
3,接口类多继承
from abc import abstractmethod,ABCMeta
class Swim_Animal(metaclass=ABCMeta):
@abstractmethod
def swim(self):pass
class Walk_Animal(metaclass=ABCMeta):
@abstractmethod
def walk(self):pass
class Fly_Animal(metaclass=ABCMeta):
@abstractmethod
def fly(self):pass
class Tiger(Walk_Animal,Swim_Animal):
def walk(self):
pass
def swim(self):
pass
class OldYing(Fly_Animal,Walk_Animal):pass
class Swan(Swim_Animal,Walk_Animal,Fly_Animal):pass
4,抽象类
import abc
class All_file(metaclass=abc.ABCMeta):
all_type='file'
@abc.abstractmethod #定义抽象方法,无需实现功能
def read(self):
'子类必须定义读功能'
with open('filaname') as f:
pass
@abc.abstractmethod #定义抽象方法,无需实现功能
def write(self):
'子类必须定义写功能'
pass
class Txt(All_file):
def read(self):
print('文本数据的读取方法')
def write(self):
print('文本数据的读取方法')
class Sata(All_file):
def read(self):
print('硬盘数据的读取方法')
def write(self):
print('硬盘数据的读取方法')
class Process(All_file):
def read(self):
print('进程数据的读取方法')
def write(self):
print('进程数据的读取方法')
wenbenwenjian=Txt()
yingpanwenjian=Sata()
jinchengwenjian=Process()
wenbenwenjian.read()
yingpanwenjian.write()
jinchengwenjian.read()
print(wenbenwenjian.all_type)
print(yingpanwenjian.all_type)
print(jinchengwenjian.all_type)
5,多态
# 多态 python 天生支持多态
# def func(int num,str name):
# pass
#
# func('alex',2)
# class Payment:pass
# class Alipay():
# def pay(self,money):
# print('已经用支付宝支付了%s元' % money)
#
# class Applepay():
# def pay(self,money):
# print('已经用applepay支付了%s元' % money)
#
# def pay(pay_obj,money): # 统一支付入口 归一化设计
# pay_obj.pay(money)
#
# pay()
# 什么是多态
# python 动态强类型的语言
# 鸭子类型
# list tuple
# 不崇尚根据继承所得来的相似
# 我只是自己实现我自己的代码就可以了。
# 如果两个类刚好相似,并不产生父类的子类的兄弟关系,而是鸭子类型
# list tuple 这种相似,是自己写代码的时候约束的,而不是通过父类约束的
# 优点 : 松耦合 每个相似的类之间都没有影响
# 缺点 : 太随意了,只能靠自觉
# class List():
# def __len__(self):pass
# class Tuple():
# def __len__(self):pass
#
# def len(obj):
# return obj.__len__()
#
# l = Tuple()
# len(l)
#
# # 强类型语言 多态
# # python 语言 鸭子类型
# 接口类和抽象类 在python当中的应用点并不是非常必要
6,封装
class Person:
__key = 123
def __init__(self,name,passwd):
self.name = name
self.__passwd = passwd
def __get_pwd(self):
return self.__passwd
def login(self):
self.__get_pwd()
alex = Person('alex','alex3714')
print(alex._Person__passwd)
print(alex.get_pwd())