对象 的 某些属性或方法 可能只希望 在对象的内部被使用,而 不希望在外部被访问到就可以设置为私有属性和私有方法。
如何定义私有属性和方法?
在 定义属性或方法时,在 属性名或者方法名前 增加 两个下划线,定义的就是 私有 属性或方法
定义私有属性:
self.__age = 18
定义私有方法:
def __secret(self):
代码举例:
非私有情况下的属性和方法
class Woman:
def __init__(self,name):
self.name = name
self.age = 18
def secret():
print("%s 年龄是 %d"%(self.anme,self.age))
xiaofang = Woman("小芳")
print(xiaofang.age)
xiaofang.secret()
#输出
18
小芳 年龄是 18
私有属性的使用
第一种情况:直接使用私有方法,例如print(xiaofang.age)**
class Woman:
def __init__(self,name):
self.name = name
self.__age = 18 #定义age为私有属性,外部无法访问
def secret():
print("%s 年龄是 %d"%(self.anme,self.__age))
xiaofang = Woman("小芳")
print(xiaofang.age) #此时会报错,外部无法使用私有属性
#输出
输出报错
第二种情况:
在对象的方法内部是可以访问对象的私有属性
例如 xiaofang.secret()
class Woman:
def __init__(self,name):
self.name = name
self.__age = 18 #定义age为私有属性,外部无法访问
def secret():
print("%s 年龄是 %d"%(self.anme,self.__age))
xiaofang = Woman("小芳")
xiaofang.secret() # 这是在对象的方法内部访问对象的私有属性,
#输出
小芳 年龄是18岁
私有方法的使用
class Woman:
def __init__(self,name):
self.name = name
self.__age = 18 #定义age为私有属性,外部无法访问
def __secret(): #两个下划线定义私有方法
print("%s 年龄是 %d"%(self.anme,self.__age))
xiaofang = Woman("小芳")
xiaofang.__secret() # 这是在对象的方法内部访问对象的私有属性
#输出报错
#Woman 对象没有__secret()方法
#私有方法不允许在外界直接访问