zoukankan      html  css  js  c++  java
  • 面向对象内置方法

    1.isinstance(obj,cls)和issubclass(sub,super)

    判断obj是否是cls类的对象
    例:
    li=[1,[2,[3,[4]]]]
    def run_list(li):
        for i in li:
            if isinstance(i,list):
                run_list(i)
            else:
                print(i)
    run_list(li)
    判断sub是否是super的派生类
    

    2. 反射

    • 定义:
    通过字符串的形式操作对象的相关属性
    
    • 相关方法
    (1)hasattr
    print(hasattr(peo1,'name')) #判断name是否在peo1.name中是可以访问的属性
    (2)getarrt
    print(getattr(peo1,'xx','None'))#在peo1中没有xx这个属性,有的话返回对应的值;没有这个属性,返回None,不会报错
    (3)strattr
    setattr(peo1,'age',19)    #增加属性
    # print(peo1 .__dict__ )
    (4)delattr(peo1,'name')  #删除
    
    • 内置方法
    __str__ 在打印对象时触发
    __del__析构方法
    __getattr__ 对象在调用属性和方法时,找不到,就会触发;
    __setattr__ 对象再给属性赋值时,就会触发
    
    class A():
        bb='123'
        def __getattr__(self, item):
            print(item)  #byuu
            return 'aa'
    
        def __setattr__(self,  key,value):
             print(key,value) # 新的属性名和值 bb 199
    a = A()
    print(a.byuu)  #调用的属性不存在就触发__getattr__
    # a.bb = 199  # 属性赋值时触发__setattr__
    
  • 相关阅读:
    Python 文件的输入与输出
    php获取客户端真实ip
    php设计模式(3)-观察者模式
    php设计模式(2)-单例模式
    php设计模式(1)-工厂模式
    设计模式
    设计模式-观察者模式
    include和require的区别
    php分页类
    反向Ajax,第5部分:事件驱动的Web开发
  • 原文地址:https://www.cnblogs.com/quqinchao/p/11257687.html
Copyright © 2011-2022 走看看