当前位置: Python基础教程 > 07-面向对象a > 阅读正文

python的私有属性和私有方法

2021.6.20.   398 次   692字

在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)   #访问私有属性

并不推荐使用上面的方式访问私有属性或方法

本篇完,还有疑问?

加入QQ交流群:11500065636 IT 技术交流群