python 对象属性与 getattr & setattr】的更多相关文章

Python对象的属性可以通过obj.__dict__获得,向其中添加删除元素就可以实现python对象属性的动态添加删除的效果,不过我们应该使用更加正规的getattr和setattr来进行这类操作 getattr(object, name[, default]) Return the value of the named attribute of object. name must be a string. If the string is the name of one of the ob…
在面向对象编程中,公开的数据成员可以在外部随意访问和修改,很难控制用户修改时新数据的合法性.解决这一问题的常用方法是定义私有数据成员,然后设计公开的成员方法来提供对私有数据成员的读取和修改操作,修改私有数据成员时可以对值进行合法性检查,提高了程序的健壮性,保证了数据的完整性.属性结合了公开数据成员和成员方法的优点,既可以像成员方法那样对值进行必要的检查,又可以像数据成员一样灵活的访问.Python 2.x中属性的实现有很多不如人意的地方,在Python 3.x中,属性得到了较为完整的实现,支持更…
使用Property管理属性 python提供了一种友好的getter.setter.deleter类方法的属性管理工具:property. property()是一个内置函数,它返回一个Property对象,它的用法很简单,将getter.setter.deleter三个方法作为它的参数即可,这些参数都是可选的. property_obj = property(getter,setter,deleter,doc) 通过这个Property对象可以智能地判断是getter操作.setter操作还…
hasattr(object,name) hasattr用来判断对象中是否有name属性或者name方法,如果有,染回true,否则返回false class attr():     def fun(x):         return x%2==1 if __name__ == '__main__':     attr=attr()   print  hasattr(attr,'fun') setattr(object,name,value) 给对象的属性赋值,如属性不存在,先创建 class…
python面向对象中的反射:通过字符串的形式操作对象相关的属性.python中的一切事物都是对象(都可以使用反射) 一.getattr 对象获取 class Manager: role = "管理员" def __init__(self,name,sex,phone,mail): self.name = name self.sex = sex self.phone = phone self.mail = mail def createClass(self): print("…
一.遍历对象的属性: 1.dir(obj) :返回对象的所以属性名称字符串列表(包括属性和方法). for attr in dir(obj): print(attr) 2.obj.__dict__:返回对象的属性名称和值键值对或者方法名称和方法对象(可以调用)键值对. dir函数和__dict__属性基本上所有的对象(模块,类)都能够使用,dir()返回的是__dict__返回的父集合. 二.获取或设置属性 getattr(obj,name) //返回属性值或者函数对象,如果是name是函数名称…
一.今日内容总结 1.反射 使用字符串数据类型的变量名来操作一个变量的值. #使用反射获取某个命名空间中的值, #需要 #有一个变量指向这个命名空间 #字符串数据类型的名字 #再使用getattr获取值, #如果变量能直接获取结果 #如果是函数,只能拿到内存地址,加上括号就是执行 #使用类名反射: 静态属性.类方法.静态方法 #使用对象名反射: 对象属性.绑定对象方法 #使用模块名反射: 变量.函数.类 #在自己所在文件中反射全局变量: getattr(sys.modules[__name__]…
python新式类 旧式类: python2.2之前的类称为旧式类,之后的为新式类.在各自版本中默认声明的类就是各自的新式类或旧式类,但在2.2中声明新式类要手动标明: 这是旧式类为了声明为新式类的方式 class A: #手写把元类 metaclass 给 type __metaclass__ = type pass #或者这样写,效果是一样的 class B(object): #手动指定继承自object类,object类是最初的类,一切类都是object的子类,是祖宗 pass  对于cl…
1. hasattr(object, name) 判断object对象中是否存在name属性,当然对于python的对象而言,属性包含变量和方法:有则返回True,没有则返回False:需要注意的是name参数是string类型,所以不管是要判断变量还是方法,其名称都以字符串形式传参:getattr和setattr也同样; >>> >>> class A(): name = 'python' def func(self): return 'A()类的方法func()'…
用类存储数据 类实际上就是一个数据结构,对于python而言,它是一个类似于字典的结构.当根据类创建了对象之后,这个对象就有了一个数据结构,包含一些赋值了的属性.在这一点上,它和其它语言的struct的作用是类似的:存储数据并提供数据检索功能. 例如,下面是史上最简单的类: class Person: pass pass关键字表示这个类没有实际的逻辑体.这里只是定义了一个类,这个类的对象初始化时不会存放任何数据.现在,构造一个对象,让它和dict一样存放一些数据: p = Person() #…