python限制输入值范围_Python检查属性的赋值范围 : `__setattr__()`的使用和装饰器

如何在赋值的时候限制一个私有属性的取值范围呢?

下面有3种方法可以选择 : 第一种是通过设置一个类的方法, 在方法里面限制取值范围; 第二种是通过property装饰器, 利用装饰器构造出一个描述符, 在setter装饰器里面限制取值范围, 这应该是最常规的做法; 第三种是在__setattr__()的魔法函数里面限制取值范围.

下面以一个例子说明:

1、按要求编写代码题

要求:

1、定义一个人的基类,类中要有初始化方法,方法中要有人的姓名,年龄.

2、将类中的姓名和年龄私有化.

3、设置年龄的范围(0-100).

方法一: 提供设置私有属性的方法

这种比较简单, 不多说, 直接看代码

class People(object):

def __init__(self, name, age=None):

self.__name = name

self.__age = age

def get_age(self):

return self.__age

# 提供设置私有属性的方法

def set_age(self, age):

if 0<=age<=100:

self.__age = age

else:

print("age的值应该在0-100,")

def get_name(self):

return self.__name

def set_name(self, name):

self.__name = name

people = People("hzf", 100)

people.set_age(150)<

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值