#使用私有属性的场景
1.把特定的一个属性隐藏起来不想让类的外部进行直接调用
#2.我想保护这个属性不想让属性的值随意的改变
3.保护这个属性不想让派生类[子类]去继承
class Person:
def init(self):
self.__name=‘admin’#加两个下划线将此属性私有化
self.age=22
pass
def str(self):
#私有化属性可以在本身类的内部使用
return ‘{}的年龄是{}’.format(self.__name,self.age)
pass
class Student(Person):
pass
stu=Student()
print(stu.__name) #私有化属性不会被继承
x1=Person()
# print(x1.name)#是通过类对象。在外部访问的 不能访问私有的
print(x1)
#通过内置函数property声明私有化私有属性
class Person():
def init(self):
self.__age=20 #定义一个私有化属性
pass
def get_age(self):#访问私有实例属性
return self.__age
def set_age(self,age):#修改私有实例属性
if age < 0:
print(‘年龄不能小于0’)
else:
self.__age=age
pass
pass
#定义一个类属性 实现通过直接访问属性的形式去访问私有的属性
age=property(get_age,set_age)
pass
p=Person()
print(p.age)
p.age=25
print(p.age)
#通过装饰器的方式去声明
class Person():
def init(self):
self.__age=20 #定义一个私有化属性
pass
@property #用装饰器修饰 添加属性标识 提供-个getter方法
def age(self):
return self.__age
@age.setter #提供一个setter方法
def age(self,parms):
if parms<0:
print(‘年龄不能小于0’)
else:
self.__age=parms
pass
p=Person()
print(p.age)
p.age=25
print(p.age)