Python3 对象私有属性和私有方法总结
Posted 在奋斗的大道
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3 对象私有属性和私有方法总结相关的知识,希望对你有一定的参考价值。
应用场景:
- 在实际开发中,对象 的 某些属性或方法 可能只希望 在对象的内部被使用,而 不希望在外部被访问到
- 私有属性 就是 对象 不希望公开的 属性
- 私有方法 就是 对象 不希望公开的 方法
定义方式:
- 在 定义属性或方法时,在 属性名或者方法名前 增加 两个下划线,定义的就是 私有 属性或方法
eg: 定义model.py 文件,核心代码如下
# 定义Person 类,包含对象属性name 和对象私有属性 age 和对象私有方法
class Person:
def __init__(self, name):
self.name = name
# 定义对象私有属性age
self.__age = 30
# 定义对象私有方法secret
def __secret(self):
print("我的年龄是 %d" % self.__age)
在main.py 文件中,引用model.py 文件中的Person类。
情况一:访问对象私有属性
# 引入自定义Person 类
from ceshi import Person
# 按间距中的绿色按钮以运行脚本。
if __name__ == '__main__':
# 验证 对象私有属性方法和方法 是否可以访问
person = Person("周志刚")
print(person.__age)
效果展示:
情况二:访问对象私有方法
# 引入自定义Person 类
from ceshi import Person
# 按间距中的绿色按钮以运行脚本。
if __name__ == '__main__':
# 验证 对象私有属性方法和方法 是否可以访问
person = Person("周志刚")
person.__secret()
效果展示:
针对对象私有属性和方法, 访问办法总结:
方式一:在类中添加对象实例方法,间接访问对象私有属性和方法。
改造Person类,添加对象实例方法getAge,修正后代码
# 定义Person 类,包含对象属性name 和对象私有属性 age 和对象私有方法
class Person:
def __init__(self, name):
self.name = name
# 定义对象私有属性age
self.__age = 30
# 定义对象私有方法secret
def __secret(self):
print("我的年龄是 %d" % self.__age)
def getAge(self):
self.__secret()
print("我的年龄是 %d" % self.__age)
# 引入自定义Person 类
from ceshi import Person
# 按间距中的绿色按钮以运行脚本。
if __name__ == '__main__':
# 验证 对象私有属性方法和方法 是否可以访问
person = Person("周志刚")
person.getAge()
效果展示:
方式二:在私有属性/方法 前面加上 _类名
=> _类名__
私有属性/方法
# 引入自定义Person 类
from ceshi import Person
# 按间距中的绿色按钮以运行脚本。
if __name__ == '__main__':
# 验证 对象私有属性方法和方法 是否可以访问
person = Person("周志刚")
# 对象私有属性,外部直接访问到
print(person._Person__age)
# 对象私有方法,外部直接访问到
person._Person__secret()
以上是关于Python3 对象私有属性和私有方法总结的主要内容,如果未能解决你的问题,请参考以下文章
python 面向对象专题:私有成员类方法静态方法属性isinstance/issubclass