python学习第二十一章

主要内容:

  1. 抽像类或者接口类

  2. 多态(鸭子模型)

  3.封装

1. 抽像类或者接口类

接口类,python是没有接口类的,只是一种规范,强制用户按照这个规范来,如果未按照规范执行,就会报错.

如下示例:

from abc import ABCMeta,abstractmethod

class Payment(metaclass=ABCMeta):
    @abstractmethod   ### # 抽象类 接口类  规范和约束  metaclass指定的是一个元类
    def pay(self):   # 抽象方法
        pass


class  Alipay(Payment):
    def pay(self,money):
        print("您使用支付宝支付了%s钱" % money)
class  QQpay(Payment):
    def pay(self,money):
        print("您使用QQ钱包支付了%s钱" % money)
class  Wechat(Payment):
    def we_pay(self,money):
        print("您使用微信支付支付了%s钱" % money)

def pay(obj,money):
    obj.pay(money)

a1 = Alipay()
q1 = QQpay()
w1 = Wechat()

pay(a1,100)
pay(q1,200)
pay(w1,300)

2 多态,或者鸭子模型

用处: 在工作中,如果你要是规定几个类必须有一样的方法.鸭子类型: 它看着像鸭子,那么他就是鸭子.

python中好多不同类但同名的方法不是强制规定,而是约定俗成,像上面这三种类,都同样据有index方法,而且功能相似,
则 他们三个互称为鸭子.

如下示例:

# str  list  tuple
str.index()
s1 = 'alex'
class Str:
    def index(self):
        pass

class List:
    def index(self):
        pass

class tuple:
    def index(self):
        pass

3.封装

封装就是将一些属性或者方法(有用的信息)放置在一个空间中.

1)广义的封装,指对象的封装.

class Person:
    def __init__(self,name,age):
        self.name = name
        self.age = age
p1 = Person('oldboy',1000)
p2 = Person('alex',10000)
print(p1.name)
print(p2.name)

2)私有的封装

对于私有成员来说,他加载到内存时,都会加上_类名__变量名,所以你在类的外部,或者派生类中都不可访问.

为什么设置私有成员?
答: 有些变量,方法,属性,只在类内部进行使用即可,不便于(不允许)类外部或者派生类去调用.

私有成员主要有三个,分别是:私有属性,私有字段,私有方法.

  

猜你喜欢

转载自www.cnblogs.com/ahliucong/p/9254286.html