zoukankan      html  css  js  c++  java
  • python====接口类 抽象类===19

    python  中没有  接口这个概念 

    接口类   抽象类  :  制定一个规范

      不能被实例化

      规范子类当中必须实现某个方法

      有原生的实现  抽象类的方法 ,但是  没有原生实现接口类的方法

    接口类:  强制  定制  一个规范  ,凡是继承 我的类中的  

          必须都有  pay()方法  ,如果没有就会报错   

      e.g

      from  abc  import  ABCMeta  ,   abstractmethod

      class  Payment( metaclass=ABCMeta ) :  #  抽象类 (接口类)

        @abstractmethod

        def  pay( self ) : #制定一个规范    必须用pay方式来  写支付方法

          pass       

        @abstractmethod    # 制定一个  就添加一个   @  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(Pay) :

        def  _ _init_ _ (self , money ) :

          self.money=money

        def  pay(self) :

          print("使用微信支付了 % s "  % self.money)

    def  pay(  obj  ) :     #   在类的外边 写一个 方法  ,  传入的  参数  是  支付方式  

      obi.pay( )    #   在  支付方式   中  调用  pay() 方法

    w1=Wechatpay( 200 )    #  实例化一个对象   自动执行  _ _init_ _

    pay( w1 )   #归一化设计

         #   将实例化对象  传入  函数  pay  中     在  类中   的 Wecahtpay   中调用   自动执行  _ _init_ _ 执行pay  方法

    封装:

      广义:  实力化一个对象  给对象空间 封装一些属性

      狭义:  私有制

      

      私有成员:  私有静态字段   私有动态方法   私有对象属性   

      私有成员  是在正常成员前边加     '   _ _    ' 

    私有静态字段:    类的外部  都不能访问  

        在  本类  中可以  访问  ,   在本类方法中   ,  创建一个调用的方法

    在外部可以调用   千万不能用   

    直接  打印  print(  类名  _ 类名 _ _属性   )    #  因为函数一运行识别到有私有成员时   就直接  变为  _类名_ _属性 了  ,这样别的就调用不到了

     e.g

      class  A:

        name = ' alex ' 

        _ _age= 1000

        def  func( self )  :

          print( self . _ _ age )

          print( A. _ _age )

          print(    '   func... '    )

    a1= A( )

    print( a1.name )   ====   alex 

    print (A. name)   ====  alex  

    print(  a1. _ _age  )  === 报错      实例化对象不能调用静态字段    在类外边 

    print (A. _ _age )    ===   报错    类名也不能调用    在类 外边 

    a1. func()=====   1000   1000    func...

    私有方法:   类的外部  不能访问

         内部可以

         派生类也不可以

    e.g

      

    class Parent:
      def __func(self):
        print('in Parent func')
      def __init__(self):
        self. __func()

    class Son(Parent):
      def __func(self):
        print('in Son func')

    son1 = Son() # ===>in  Parent func     函数中有私有方法  ,  方法名 自动变成了  _ Parent_ _func      _Son _ _func

                      但是  Son()自动执行的是 _ _init_ _, 但是_ _init__所在的类是  Parent  

                      因此  ,会执行  Parent 类中的  _ _func方法  ====>   in Parent  func

        

  • 相关阅读:
    RobotFramework 安装配置(一)
    JAVA练手--集合
    JAVA文件操作
    线性布局--LinearLayout
    android studio导入android studio工程
    通过开机广播(broadcast)通知应用
    Android studio应用导入源码错误This attribute must be localized
    android studio的jni和so
    上传漏洞总结-UPLOAD-LABS
    靶机渗透测试实战(一)——熟悉渗透测试流程的简单测试
  • 原文地址:https://www.cnblogs.com/lynysy/p/9373526.html
Copyright © 2011-2022 走看看