5 属性 property

本文介绍了Python中如何使用属性(property)以及@property装饰器来更好地管理类中的私有变量。通过具体的Dog类示例,展示了如何定义getter和setter方法,并探讨了它们在不同场景下的调用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.属性  property

 调用私有属性通过实例方法调用。达到这种效果

#property的作用:相当于把方法进行了封装, 开发者在对属性设置数据的时候更方便
class Dog(object):
    def __init__(self):
        self.__num = 100
    def set_num(self,new_num):
        print("---setter")
        self.__num = new_num
    def get_num(self):
        print("----getter--")
        return self.__num

    num = property(get_num,set_num)    #通过属性实现这种效果

dog1 = Dog()
#print(dog1.get_num())
#dog1.set_num(50)
#print(dog1.get_num())

print("-"*50)
dog1.num = 111   #相当于调用了dog1.set_num(200)
print(dog1.num)   #相当于调用了dog1.get_num()

 

####  运行结果

---setter
----getter--
111

 

#注意点:
#t.num 到底是调用getNum()还是setNum(),要根据实际的场景来判断,
#1. 如果是给t.num赋值 那么一定调用setNum()
#2. 如果是获取t.num的值,那么就一定调用getNum()

 

 

 

2.@property

class Dog(object):
    def __init__(self):
        self.__num = 100

    @property
    def to_num(self):       #同名函数
        print("---getter")
        return self.__num

    @to_num.setter    #函数名.setter
    def to_num(self,new_num):  #同名函数
        print("---setter")
        self.__num = new_num


   # num = property(get_num,set_num)

dog1 = Dog()
dog1.to_num = 111   #相当于调用to_num(111)
print(dog1.to_num)   #相当于调用to_num()

 

 

---setter
---getter
111

 

    

 

转载于:https://www.cnblogs.com/venicid/p/7922988.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值