面向对象内置方法

Posted quqinchao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象内置方法相关的知识,希望对你有一定的参考价值。

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-面向对象类的内置方法

python-面向对象-内置方法补充

python 面向对象进阶之内置方法

面向对象之内置方法

python面向对象常用内置方法

九.python面向对象(内置方法)