如何在赋值的时候限制一个私有属性的取值范围呢?
下面有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)<