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()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值