Python面向对象--私有化和@property装饰器
私有化
封装:1.私有化属性 2.定义共有的set和get方法
__属性:就是将属性私有化,访问范围仅仅限于类中
私有化的好处:
1.隐藏属性,不被外界随意修改
2.也可以修改:通过一个函数完成
def setxxx(self,xxxx):
可以进行筛选赋值内容
if xxxx是否符合条件:
赋值
else:
不赋值
3.如果想获取具体的某一个属性,
使用get函数完成
def getxxx(self):
return self.__属性
1 class Student:
2 # __age = 18 # 类属性
3
4 def __init__(self, name, age):
5 self.__name = name
6 self.__age = age
7 self.__score = 69
8
9 # 定义共有set和get方法
10 # set是为了赋值
11 def setAge(self, age):
12 if age > 0 and age <= 120:
13 self.__age = age
14 else:
15 print('年龄不在规定范围内')
16
17 # get是为了取值
18 def getAge(self):
19 return self.__age
20
21 def setName(self, name):
22 if len(name) >= 6:
23 print('名字长度不符合!')
24 else:
25 self.__name = name
26
27 def getName(self):
28 return self.__name
29
30 def __str__(self):
31 return '姓名:{},年龄:{},考试分数:{}'.format(self.__name, self.__age, self.__score)
32
33
34 tom = Student('tom', 18)
35 print(tom)
36 tom.setAge(130)
37 tom.setName('jack')
38 # tom.age = 21
39 # print(tom.__score) 无法修改私有属性
40 # tom.__score = 96
41 print(tom.getAge())
42 print(tom.getName())
43 '''
44 姓名:tom,年龄:18,考试分数:69
45 年龄不在规定范围内
46 18
47 jack
48
49 '''
2.@property装饰器
1 class Student:
2 # __age = 18 # 类属性
3
4 def __init__(self, name, age):
5 self.name = name
6 self.__age = age
7
8 @property
9 def age(self):
10 return self.__age
11
12 @age.setter 上面也有age方法
13 def age(self, age):
14 if age > 0 and age <= 100:
15 self.__age = age
16 else:
17 print('年龄不在规定范围内')
18
19 def __str__(self):
20 return '姓名:{},年龄:{},考试分数:{}'.format(self.__name, self.__age, self.__score)
21
22
23 tom = Student('tom', 18)
24 tom.name = 'jack'
25 print(tom.name)
26
27 tom.age = 130
28 print(tom.age)
29
30 '''
31 jack
32 年龄不在规定范围内
33 18
34 '''
作者:Ambitious
-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!