一、私有属性与私有方法
Python中,是没有真正意义上的私有的
- 私有属性与私有方法是对象的隐私,通常用于做一些内部的事情,外界与子类都不能直接访问
名称 | 描述 |
---|---|
私有属性 | 对象不希望公开的属性 |
私有方法 | 对象不希望公开的方法 |
- 定义方式
定义属性名或方法名时,在属性名或方法名的前面加两个下划线,这样定义的就是私有属性或私有方法
提示:
- 子类对象不能再自己的方法内部,直接访问父类的私有属性或私有方法,但是可以通过父类的公有方法进行间接访问
eg:
class Women:
def __init__(self, name):
self.name = name
self.__age = 18
self.age = 18
def __secret(self):
# 在对象的方法内部是可以访问对象的私有属性的
print("%s的年龄是%d" % (self.name, self.__age))
def secret(self):
# 在对象的方法内部是可以访问对象的私有属性的
print("%s的年龄是%d" % (self.name, self.__age))
if __name__ == '__main__':
xiaomei = Women('小美')
print(xiaomei.age)
xiaomei.secret()
# # 私有属性不能直接被外界访问
# print(xiaomei.__age)
# # 私有方法不能直接被外界调用
# xiaomei.__secret()
二、伪私有属性与伪私有方法
Python中,是没有真正意义上的私有的,只是在给属性、方法命名时,对名称做了一些特殊处理,使外界无法访问到
- 处理方式:
_类名__名称
class Women:
def __init__(self, name):
self.name = name
self.__age = 18
self.age = 18
def __secret(self):
# 在对象的方法内部是可以访问对象的私有属性的
print("%s的年龄是%d" % (self.name, self.__age))
def secret(self):
# 在对象的方法内部是可以访问对象的私有属性的
print("%s的年龄是%d" % (self.name, self.__age))
if __name__ == '__main__':
xiaomei = Women('小美')
print(xiaomei.age)
xiaomei.secret()
# 私有属性不能直接被外界访问
print(xiaomei._Women__age)
# 私有方法不能直接被外界调用
xiaomei._Women__secret()
更新中......