zoukankan      html  css  js  c++  java
  • 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('''
    这些类,都互称鸭子类型
    其中方法名可以自由更改,任意变换,但是一般不要这样做
    ''')
  • 相关阅读:
    金丝雀发布、滚动发布、蓝绿发布到底有什么差别?关键点是什么?
    分析占用了大量 CPU 处理时间的是Java 进程中哪个线程
    阿里巴巴首部记录片问世:看哭所有创业者!
    【LBS】基于地理位置的搜索之微信 附近的人 简单实现
    【Linux】Linux 常用命令汇总
    【心灵鸡汤】为什么我会去云平台讲课
    【Mysql数据库访问利器】phpMyadmin
    【Java】一台服务器配置多个Tomcat
    tp5, laravel, yii2我该选择哪个
    网站升级2.0回滚机制
  • 原文地址:https://www.cnblogs.com/ALADL/p/9372442.html
Copyright © 2011-2022 走看看