码迷,mamicode.com
首页 > 编程语言 > 详细

**python面向对象进阶

时间:2018-11-03 15:25:07      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:delattr   subclass   反射   att   elf   setattr   对象   字符串   删除   

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__)

 

**python面向对象进阶

标签:delattr   subclass   反射   att   elf   setattr   对象   字符串   删除   

原文地址:https://www.cnblogs.com/brzp97/p/9900645.html

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