前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python中私有变量和私有方法芳

Python中私有变量和私有方法芳

作者头像
王大力测试进阶之路
发布2022-06-07 18:20:08
1.3K0
发布2022-06-07 18:20:08
举报
文章被收录于专栏:橙子探索测试橙子探索测试

Python中要想定义的方法或者变量只能在类内部使用不被外部使用,可以在方法和变量前面加两个下划线,让其变为私有方法或私有变量。类外部可以通过 ”_类名__私有属性(方法)名“ 访问私有属性(方法)。

代码语言:javascript
复制
class Person:
    __work = 'teacher'

    def __init__(self,name,age):
        self.name = name
        self.__age = age

    def run(self):
        print(self.__age,self.__work)

    def __eat(self):
        print('1111')

__work是私有类变量,类外是无法访问的

代码语言:javascript
复制
if __name__ == '__main__':
print(Person.__work)
Traceback (most recent call last):  File "C:/Users/wangli/PycharmProjects/Test/test/test.py", line 20, in <module>    print(Person.__work)AttributeError: type object 'Person' has no attribute '__work'

__work是私有类变量,类外类实例对象是无法访问的

代码语言:javascript
复制
if __name__ == '__main__':
    test1 = Person('王大力','22')
print(test1.__work)Traceback (most recent call last):  File "C:/Users/wangli/PycharmProjects/Test/test/test.py", line 21, in <module>    print(test1.__work)AttributeError: 'Person' object has no attribute '__work'

__age是私有实例变量,类外类实例对象是无法访问的

代码语言:javascript
复制
if __name__ == '__main__':
    test1 = Person('王大力','22')
print(test1.__age)Traceback (most recent call last):  File "C:/Users/wangli/PycharmProjects/Test/test/test.py", line 21, in <module>    print(test1.__age)AttributeError: 'Person' object has no attribute '__age'

__work是私有类变量,__age是私有实例变量,类内是可以访问的

代码语言:javascript
复制
if __name__ == '__main__':
    test1 = Person('王大力','22')
test1.run()22 teacher
Process finished with exit code 0

__eat()是私有方法,类外是无法访问的

代码语言:javascript
复制
if __name__ == '__main__':
    test1 = Person('王大力','22')
print(test1.__eat())Traceback (most recent call last):  File "C:/Users/wangli/PycharmProjects/Test/test/test.py", line 21, in <module>    print(test1.__eat())AttributeError: 'Person' object has no attribute '__eat'

__work是私有类变量,__age是私有实例变量,__eat()是私有方法,类外部可以通过 ”_Person___私有属性(方法)名“ 访问私有属性(方法)

代码语言:javascript
复制
if __name__ == '__main__':
    print(Person._Person__work)
    test1 = Person('王大力','22')
    print(test1._Person__work)
    print(test1._Person__age)
test1._Person__eat()
teacherteacher221111
Process finished with exit code 0
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-04-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 橙子探索测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档