码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象内置方法

时间:2019-07-28 09:19:09      阅读:83      评论:0      收藏:0      [点我收藏+]

标签:方法   print   att   getattr   code   one   return   调用   self   

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__

面向对象内置方法

标签:方法   print   att   getattr   code   one   return   调用   self   

原文地址:https://www.cnblogs.com/quqinchao/p/11257687.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!