python动态设置类属性

一、动态设置类型属性-反射

在代码运行之前,类/实例的属性名和值都是不知道的。
要在代码的运行过程当中,才知道要给类/对象、添加/删除/修改额外的属性

类的属性和方法,此处统一称为atrribute(属性)

hasattr(对象/类, 属性名): 对象或者类是否有这个属性,有就是True, 没有就是False
getattr(对象/类, 属性名): 获取 对象/类 的属性值。
setattr(对象/类, 属性名, 属性值):添加 对象/类 的属性和值, 如果属性存在,修改 对象/类 的属性值
delattr(对象/类, 属性名): 删除 对象/类 的属性和值。

二、代码示例

class Father:

    def __init__(self, name):
        self.name = name
        self._private_money = 2000
        self.__secrect = "秘密"

    def eat(self, food):
        print(f"喜欢吃什么?{food}")

    def sleep(self):
        print("睡觉中.....")


# 类属性
if hasattr(Father, "hello"):
    print(Father.hello)
else:
    setattr(Father, "hello", "hello,class")
print(Father.hello)

# 实例属性
# f = Father("base")
# ss = Father("sss")
# if hasattr(f,"sex"):
#     print(f.sex)
# else:
#     setattr(f, "sex", "女")
#
# print(f.sex) # f对象有sex属性
# # print(ss.sex) # ss对象没有sex属性
#
# # 删除f对象的name属性之后,再次访问f的name属性
# delattr(f, "name")
# # print(f.name)
# print(ss.name)

f = Father("base")
print(f.__dict__)

# 判断对象有没有某个方法
if hasattr(f, "sleep"):
    f.sleep()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值