Python教程

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

本文主要是介绍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
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 '''

 

这篇关于Python面向对象--私有化和@property装饰器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!