在python的面向对象中, 如果希望对象的某些属性或方法仅被内部使用, 就叫私有属性私有方法
- 私有属性, 就是不希望公开的属性
- 私有方法, 就是不希望公开的方法
和它对立的, 是公开的属性和方法, 此外还有保护方法等, 将在后续章节讲解
私有属性和方法, 在定义时, 需要在方法名前加两个_, 比如
- __name –> 私有属性
- __eat() —> 私有方法
那么问题来了, 什么是私有属性或方法?
私有属性和方法无法通过变量名调用, 但对象的内部可以访问
class Person:
def __init__(self,name="默认名", age=0):
self.name=name
self.__age=age
def say(self):
print("我的名字是"+self.name)
def __say2(self):
print(self.__age) #私有属性方法内部是能访问到的
xiaoming = Person()
print(xiaoming.name) #正常输出属性
xiaoming.say() #正常输出方法
#以下代码将报错, 私有属性无法通过对象名.属性名调用
#print(xiaoming.age)
#私有方法, 也是同理, 无法使用对象名.属性名调用
#xiaoming.say2()
伪私有属性和伪私有方法
在python中, 其实并不存在绝对的私有, python中的私有是伪私有, 实际仍能被访问
通过 对象名._类名__属性名(方法名) 就可以访问, 比如上述的代码
xiaoming._Person__say2() #访问私有方法
print(xiaoming._Person__age) #访问私有属性
并不推荐使用上面的方式访问私有属性或方法