python面向对象案例
身份运算符
私有属性和私有方法
在实际的开发中,对象的某些属性或方法可能只希望在对象的内部被使用,而不希望在外部被访问
私有属性就是对象不希望公开的属性
私有方法就是对象不希望公开的方法
定义方法:在定义属性或方法时,在属性名或者方法名前增加两个下划线,就是私有属性或方法
class Women:
"""女性类"""
def __init__(self,name):
"""初始化方法"""
self.name = name
# 前置双下划线的属性是私有的属性
self.__age = 20
def eat(self):
"""吃方法"""
print("%s 今年 %d 岁了,是一个吃货" % (self.name,self.__age))
# 前置双下划线的方法是私有方法
def __secret(self):
"""私有方法"""
print("个人秘密")
nv = Women("lin")
print(nv.name)
# 在类的内部调用__age私有属性
nv.eat()
# 在类的外部调用__age私有属性
print(nv.__age)
python中私有的实质
python中并没有真正意义上的私有
私有变量与方法实质上是通过名字重整的方式,改变名字
私有属性 :__私有属性名—>_类名__私有属性名
私有方法 :__私有方法名—>_类名__私有方法名
class Women:
"""女性类"""
def __init__(self,name):
"""初始化方法"""
self.name = name
# 前置双下划线的属性是私有的属性
self.__age = 20
def eat(self):
"""吃方法"""
print("%s 今年 %d 岁了,是一个吃货" % (self.name,self.__age))
# 前置双下划线的方法是私有方法
def __secret(self):
"""私有方法"""
print("个人秘密")
nv = Women("lin")
print(nv.name)
print(dir(Women))
print(nv._Women__age)
对外提供访问私有属性的接口(方法)
使用get方式获得私有属性值
使用set方式设置私有属性值
def get_age(self):
"""获取私有属性值"""
return self__age
def set_age(self,new_age):
"""设置私有属性值"""
if new_age <=0 or new_age >= 150:
print("您输入的年龄有误")
return
self.__age = new_age