面向对象的私有化
"""
私有化
封装:1.私有化属性 2.定义公有set和get方法
__属性:就是将属性私有化,访问权限仅仅限于类中
"""
"""
好处:
1.隐藏属性不被外界随意修改
2.也可以通过函数来修改
3.要写函数set 并且可以控制修改的内容
4.如果想获取具体的某一个属性
使用get函数
"""
class Student:
def __init__(self, name, age):
self.__name = name
self.__age = age
self.__score = 60
def setAge(self, age):
if 0 < age < 120:
self.__age = age
else:
print('年龄不在正常范围内')
def getAge(self):
return self.__age
def setName(self, name):
if len(name) == 6:
self.__name = name
else:
print('名字不是六位')
def getName(self):
return self.__name
def __str__(self):
return f'姓名{self.__name, self.__age, self.__score}'
xiaoming = Student('xiaoming', 18)
print(xiaoming)
xiaoming.setAge(20)
print(xiaoming)
xiaoming.setName('xiaohua')
print(xiaoming)
xiaocui = Student('xiaocui', 19)
print(xiaocui)
print(xiaoming.getAge())
print(xiaocui.getName())
"""
通过装饰器
"""
class Student:
def __init__(self, name, age):
self.__name = name
self.__age = age
self.__score = 60
@property
def age(self):
return self.__age
@age.setter
def age(self, age):
if 0 < age < 120:
self.__age = age
else:
print('年龄不在正常范围内')
def __str__(self):
return f'姓名{self.__name, self.__age, self.__score}'
xiaoming = Student('xiaoming', 18)
print(xiaoming)
xiaoming.age = 30
print(xiaoming)