• Python OOP 面向对象


    1.Python实现OOP可以概括为三个概念:

    • 继承:基于Python属性查找
    • 多态:在x.method中,method的意义取决于x的类型
    • 封装:方法和运算符实现行为,数据隐藏是一种惯例

    2.委托:通常就是指控制器对象内嵌其他对象,而把运算请求传给那些对象。

    3.类的伪私有属性:变量名压缩,一种把类所创建的变量名局部化的方式,主要是为了避免实例内的命名空间的冲突,当每个类说self.x时所得的值,

      取决于最后一个赋值的是那个类。变量名

    class C1:
        def meth1(self):
            self.x = 88
        def meth2(self):
            print(self.x)
    
    class C2(object):
        """docstring for C2"""
        def metha(self):
            self.x = 99
        def methb(self):
            print(self.x)
    
    class C3(C1,C2):
        pass
    
    
    if __name__ == "__main__":
        c3 = C3()
        c3.meth1()
        c3.metha()
        c3.meth2() # 此时调用输出为99,会覆盖C1的x的值
    class C1:
        def meth1(self):
            self.__x = 88
        def meth2(self):
            print(self.__x)
    
    class C2(object):
        """docstring for C2"""
        def metha(self):
            self.__x = 99
        def methb(self):
            print(self.__x)
    
    class C3(C1,C2):
        pass
    
    
    if __name__ == "__main__":
        c3 = C3()
        c3.meth1()
        c3.metha()
        c3.meth2() # 此时调用输出为88

    4.绑定方法与无绑定方法

    对象点号运算,而没有用括号调用之前产生绑定方法

    类点号运算之后,产生无绑定方法,但是调用之前必须明确的传入self参数

    class Test:
        def display(self,*arg):
            print(arg)
    
    if __name__ == "__main__":
        t1 = Test()
        func = t1.display # 绑定方法
        func([1,2,3]) # 调用时不必指出self参数,因为已经将方法绑定到对象t1
    
        t2 = Test()
        func2 = Test.display # 无绑定方法
        func2(t2,[4,5,6]) # 调用时必须明确指定self参数
  • 相关阅读:
    SaltStack概述及安装
    Zabbix高可用
    Zabbix数据库表结构
    asp select count(*) 用 open还是excute
    asp+jquery+ajax,asp后台程序执行不正常
    aspupload ,在winows server 2008 下无法使用
    jquery 如何使用innerHTML
    thinkphp的select和find的区别(转)
    centos安装PHP-pdo支持pdo
    Excel 2007 打开 UTF-8 编码 CSV 文件的乱码BUG
  • 原文地址:https://www.cnblogs.com/SunQi-Tony/p/9914394.html
Copyright © 2020-2023  润新知