面向对象_反射

反射

hasattr()函数用于判断对象是否包含对应的属性,返回布尔值,有的话返回True没有返回False

 

class Person(object):
    city = "beijing"

    def __init__(self, name):
        self.name = name

    def talk(self):
        print("{} are you ok".format(self.name))


p1 = Person("李大伟")
print(hasattr(p1, "address"))  # False
print(hasattr(p1, "city"))  # True
getattr()返回一个对象的属性值
获取对象的属性和方法,有则返属性,无则返回默认值,默认值可以自己设置
class Person(object):
    city = "beijing"

    def __init__(self, name):
        self.name = name

    def talk(self):
        print("{} are you ok".format(self.name))


p1 = Person("李大伟")
print(getattr(p1, "name"))  # 获取属性
print(getattr(p1, "talk"))  # 获取方法的内存地址
print(getattr(p1, "speak", "无此属性"))  # 没有此属性

 

 

setattr 给一个对象设置属性
delattr 给一个对象删除属性
class Person(object):
    city = "beijing"

    def __init__(self, name):
        self.name = name

    def talk(self):
        print("{} are you ok".format(self.name))


p1 = Person("李大伟")
setattr(p1, "speak", "chinese")

print(p1.__dict__)  # {'name': '李大伟', 'speak': 'chinese'}

delattr(p1, "name")
print(p1.__dict__)  # {'speak': 'chinese'}

 

 

posted @ 2019-09-05 09:02  南头老李  阅读(79)  评论(0编辑  收藏  举报