• python面向对象-封装and多态


    python 接口类和抽象类

    为什么讲封装之前要将这个东西? 我才不会说为什么

    首先:

      python没有接口类这个概念!!!!!!!!

    哈哈哈......神经病

    python抽象类和接口类更接近于一种规范,例如,我吃苹果,吃香蕉,吃梨,这些我都可以统一归到吃水果这个类中,但是我能吃到这个水果吗?????  水果这个笼统的东西我能吃到吗,我只能吃到具体的香蕉什么的.........

    这个规范不止一个,可以制定多个! 应该能明白这个意思吧.......

    from abc import ABCMeta,abstractmethod

    class Payment(mteaclass = ABCMeta):
    @abstractmethod
    def pay(self): pass
    # @abstractmethod
    # def func(self): pass

    class Alipay(Payment):
    def __init__(self,money):
    self.money = money

    def pay(self):
    print('使用了支付宝支付了%s元'%self.money)

    class Jdpay(Payment):
    def __init__(self,money):
    self.money = money

    def pay(self):
    print('使用了京东支付了%s元' % self.money)

    class Wechatpay(Payment):
    def __init__(self,money):
    self.money = money

    def pay(self):
    print('使用了微信支付了%s元' % self.money)

    def pay(obj):
    obj.pay()

    print('''

    w1 = Wechatpay(200)
    a1 = Alipay(100)
    pay(a1)
    pay(w1)

    ''')
     
       

    这就是规范化,统一化设计

    这个格式是固定的

    在下面统一一个接口

     这样的一段代码就实现了对程序的归一化设计,不按照格式来编写程序就会报错

    封装

    广义的封装: 实例化 一个对象,对象空间封装一些属性

    狭义的封装: 私有制

    对于私有静态字段,类的外部不能访问 

    类名不能访问私有静态字段

    对于私有静态字段来说,只能在本类内部访问,类的外部,派生类均不可访问(其实可以访问,只不过访问的方式算是python的一个bug)

    私有成员: 私有惊天字段, 私有方法,私有对象属性

    class B:
    __money = 1000 # 私有静态字段

    class A(B):
    name = 'alex'
    __age = 20 # 私有静态字段

    def func(self):
    print(self.__age)
    print(A.__age) # 对于私有静态字段,类的内部可以访问
    print('func...')
    def func1(self):
    print(self.__money)
    print(A.__money)

    a1 = A()
    print(a1.name)
    print(A.name)

    print('''

    print(a1.__age) # 实例化对象不能访问私有静态字段
    print(A.__age) # 类名不能访问私有静态字段
    # 对于私有静态字段,类的外部不能访问
    a1.func()

    # 有一个方法可以访问,但是这是python的一个bug

    print(A._A__age)
    ''')

    多态

    python处处是多态!!!!!!!!!!

    python中没有多态的概念!!!!!!!!!

    .......扑哧........

    (你放佛在刻意逗我笑)

    嘛,这两句话都没有毛病,python确实没有多态的概念,它有的就是鸭子类型

    什么叫鸭子类型? 

    鸭子类型: 看着像鸭子,他就是鸭子

    # python中没有多态. 但是他有鸭子类型
    # 鸭子类型,: 看着像鸭子, 那么他就是鸭子
    # 互看为鸭子类型的数据都有:
    class Str:
    def index(self):
    pass

    class List:
    def index(self):
    pass

    class Tuple:
    def index(self):
    pass

    print('''
    这些类,都互称鸭子类型
    其中方法名可以自由更改,任意变换,但是一般不要这样做
    ''')
  • 相关阅读:
    java lambda表达式检查list集合是否存在某个值
    Java使用枚举来消除if else(转载)
    常用的设计模式汇总,超详细!
    mybatis generator 自动生成代码
    eclipse集成lombok插件
    eclipse使用mybatis实现Java与xml文件相互跳转
    GitLab企业级代码管理仓库
    详解Eureka 缓存机制
    JAVA设计模式之工厂模式
    solr常见错误
  • 原文地址:https://www.cnblogs.com/ALADL/p/9372442.html
Copyright © 2020-2023  润新知