您的位置:首页 > 编程语言 > Python开发

学习笔记☞ python 基础(python3)【七】(面向对象编程-3)

2018-03-27 17:11 405 查看

面向对象-3

    封装(enclosure):        1、封装的目的是让使用者通过尽可能少的变量名(或方法)操作对象
        2、封装是指隐藏类的实现细节,让使用者不用关心这些细节
    私有实例变量和方法:        python类中,以双下划线'__'开头,不以双下划线结尾的标识符为私有成员
            私有属性在子类和类外部无法直接使用
            私有方法在子类和类外部无法直接使用
    继承(inheritance)和派生(derived)        为什么要继承/派生
            继承的目的是延续旧的类的功能
            派生的目的实在旧类的基础上添加新的功能
        作用:
            1、用继承派生机制,可以将一些共有功能加在基类中,实现代码共享;
            2、在不改变超累代码的基础上改变原有的功能
        继承/派生名词:
            基类(base class)/超类(super class )/父类(father class)
            派生类(derived class)/子类(child class)
    单继承的语法:        class 类名(超类名):
            ……
    示例:
        inherit.py
    
    __base__属性:        用来记录此类的基类
        
    object类是所有类的原始父类
    
    覆盖(override)        覆盖是指在有继承关系的类中,子类中实现了与基类(超类)同名的方法,
        在子类实例调用该方法时,实际调用的是子类中的覆盖版本,这种现象叫覆盖。
    用于类的函数:        issubclass(cls,类或者多个类的元组)
            判断一个类是否继承自其它的类,
            如果此类是class或tuple中的一个派生子类,
            则返回True,否则返回False。
        示例:
            class A:
                pass
            class B(
96ba
A):
                pass
            class C(B):
                pass
            issubclass(C,B)        #True
            issubclass(C,int)        #False
            issubclass(C,(int,str))        #False
            issubclass(C,(int,str,A)        #True
    super函数:        super(type,obj)        
            返回绑定超类的实例(要求obj必须为type类型的实例)
        super()
            返回绑定超类的实例,等同于super(__class__,实例方法的第一个参数),
            必须用在方法内部
        示例:
            super.py
            # 此示例示意supper的用法
            class A :
                def mymethod( self ) :
                    print( 'A的mymethod方法被调用' )

            class B( A ) :
                def mymethod( self ) :
                    print( 'B的mymethod方法被调用' )

                def call_all( self ) :
                    # 此方法想调用自己的mymethod,然后再调用A类的mymethod
                    self.mymethod( )
                    # 然后再调用A类的mymethod
                    super( B , self ).mymethod( )
                        #等同
                    super().mymethod()          #再内部可以不写参数

            b = B( )
            b.mymethod( )  # B类的mymethod
            # 用b调用A类的mymethod
            super( B , b ).mymethod( )  # A类的mymethod
            b.call_all( )  # 打印良好
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: