**python面向对象进阶

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

#isinstance(obj,cls)检查是否obj是否是类 cls 的对象

class Foo(object):
     pass
  
 obj = Foo()
  
 isinstance(obj, Foo)

#issubclass(sub, super)检查sub类是否是 super 类的派生类

 class Foo(object):
     pass
  
 class Bar(Foo):
     pass
  
 issubclass(Bar, Foo)

反射:程序可以访问,检测和修改本身运行状态或行为的一种能力(自省)

Python中可以实现自省的四个函数(通过字符串的形式操作相关属性)

hasattr  getattr  setattr  delattr

class test:
    def __init__(self,x,y,z):
        self.x = x
        self.y = y
        self.z = z
    def func(self):
        return self.x+self.y+self.z
s = test(1,2,3)

# hasattr判断是否含有某属性
print(hasattr(s,'x'))

# getatter获取属性
v = getattr(s,'func')
print(v())

#setattr设置属性
setattr(s,'w',4)
print(s.__dict__)

# delattr删除属性
delattr(s,'w')
print(s.__dict__)

猜你喜欢

转载自www.cnblogs.com/brzp97/p/9900645.html