ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python面向对象--私有化和@property装饰器

2022-03-30 20:35:18  阅读:149  来源: 互联网

标签:.__ name Python self -- tom property age def


私有化

 封装: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
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 '''

 

标签:.__,name,Python,self,--,tom,property,age,def
来源: https://www.cnblogs.com/onebit123/p/16078913.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有