pyhton反射hasattr getattr delattr

https://www.cnblogs.com/Eva-J/articles/7351812.html

类.属性

类.方法

python面向对象中的反射:通过字符串的形式操作对象相关的属性。python中的一切事物都是对象(都可以使用反射)

在做程序开发中,我们常常会遇到这样的需求:需要执行对象里的某个方法,或需要调用对象中的某个变量,但是由于种种原因我们无法确定这个方法或变量是否存在,这是我们需要用一个特殊的方法或机制要访问和操作这个未知的方法或变量,这中机制就称之为反射。接下记录下反射几个重要方法

hasattr(类名, 方法名) 判断对象中时候存在这个方法或者变量  存在返回true  不存在返回false

class A():
    name = 'zhouta'
    @classmethod
    def funca(cls):
        print('i love taylor')

a = A()
# print(a.name)
#hasattr(类名, 方法名)两个参数, 方法在类中则返回true, 不在则返回false
se = hasattr(A,'funca')
print(se)
se2 = hasattr(A,'dd')
print(se2)

getattr 获取对象中的方法或变量的内存地址

class A():
    name = 'zhouta'
    @classmethod
    def funca(cls):
        print('i love taylor')

a = A()

se3 = getattr(A,'name')
print(se3)
se4 = getattr(A,'funca')#获取funca内存地址
se4()#执行方法

setattr添加属性和值

setattr(A,'age',34)#添加属性age, 添加值为34
print(getattr(A,'age'))  #获取值

获取对象中的方法或变量的内存地址

原文地址:https://www.cnblogs.com/taysem/p/12157510.html