私有化

# 私有化
# 封装的一个概念:1.私有化你的属性部分 2.定义公有的set和get方法
# __属性就是将一个属性私有化,私:专属于,有:出了这个结构体,谁也访问不了。只限制于类中


class Student:
# __age = 18 # 类属性私有化

def __init__(self, name, age):
self.__name = name
self.__age = age
self.__socre = 59

# get:是为了取值

# 定义成函数还有一个好处就是可以在函数里面加各种各样的判断,变成了更加灵活
def getAge(self):
return self.__age

# set:是为了赋值

def setAge(self, age):
self.__age = age

def __str__(self):
return '姓名是:{}年龄是:{}考试分数是:{}'.format(str(self.__age), self.__name, self.__socre)


a = Student(18, 'zzh')
print(a)
a.setAge(200)
print(a)
print(a.getAge())
# 需要定义一个公有的set和get,不然值无法改变了

# 在开发中,我们经常看到的一些私有化的处理
# 装饰器来完成 @property


class Student:
def __init__(self, name, age):
self.__name = name
self.__age = age

@property
def age1(self):
return self.__age
#这就好比先要有set再有get一样
@age1.setter
def age1(self, age):
self.__age = age

# def setAge(self, age):
# if 0 < age < 100:
# self.__age = age
# else:
# print('年龄不正确')
#
# def getAge(self):
# return self.__age

def __str__(self):
return '姓名是{}年龄是{}'.format(self.__name, self.__age)


a = Student('zzh', 55)
a.age1 = 50
print(a.age1)
# 私有化赋值
# a.setAge(30)
# print(a.getAge())
# 如何让外界在使用的时候和原来是一样的 这边就需要用到装饰器
原文地址:https://www.cnblogs.com/SmartCat994/p/12306937.html