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

class Person:__work = 'teacher'def __init__(self,name,age):self.name = nameself.__age = agedef run(self):print(self.__age,self.__work)def __eat(self):print('1111')

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

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是私有类变量,类外类实例对象是无法访问的

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是私有实例变量,类外类实例对象是无法访问的

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是私有实例变量,类内是可以访问的

if __name__ == '__main__':test1 = Person('王大力','22')
test1.run()
22 teacher
Process finished with exit code 0

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

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___私有属性(方法)名“ 访问私有属性(方法)

if __name__ == '__main__':print(Person._Person__work)test1 = Person('王大力','22')print(test1._Person__work)print(test1._Person__age)
test1._Person__eat()
teacher
teacher
22
1111
Process finished with exit code 0

Python中私有变量和私有方法芳相关推荐

  1. python定义私有变量的方法_Python类中的 私有变量和私有方法

    默认情况下,Python中的成员函数和成员变量都是公开的(public),在python中没有类似public,private等关键词来修饰成员函数和成员变量. 在python中定义私有变量只需要在变 ...

  2. python定义私有变量的方法_Python面向对象程序设计之私有变量,私有方法原理与用法分析...

    本文实例讲述了Python面向对象程序设计之私有变量,私有方法原理与用法.分享给大家供大家参考,具体如下: 私有变量,私有方法:python的私有化是为了规划私有属性,避免非相关的访问[假如!我有老婆 ...

  3. 19. Python 类的重写   类的私有变量和私有方法

    1.类的重写 例子: class parent(object):name = 'parent'age = 100def __init__(self):print('my name is parent' ...

  4. python:私有变量和私有方法

    默认情况下,Python中的成员函数和成员变量都是公开的(public),在python中没有类似public,private等关键词来修饰成员函数和成员变量. 在python中定义私有变量只需要在变 ...

  5. Python私有变量与私有方法

    python的私有化是为了规划私有属性,避免非相关的访问[假如!我有老婆,你不能直接知道我老婆是谁,你只有问我才会知道,即我的私有属性只有我知道] 在python中定义私有变量和私有方法只需要在变量名 ...

  6. python中不被定义_一日一技:在Python中双下划线私有方法不能被调用的原理

    一日一技:在Python中双下划线私有方法不能被调用的原理 在使用Python编写面向对象的代码时,我们会常常使用"继承"这种开发方式.例如下面这一段代码: class Info: ...

  7. java中私有变量和方法_Java 私有变量和私有方法

    作者: Jakob Jenkov 译者:叶文海(yewenhai@gamil.com) 内容索引 访问私有变量 访问私有方法 在通常的观点中从对象的外部访问私有变量以及方法是不允许的,但是 Java ...

  8. python中none算变量吗_在python中对变量判断是否为None的三种方法总结

    三种主要的写法有: 第一种:if X is None; 第二种:if not X: 当X为None,  False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()这 ...

  9. Object-C 有私有变量?私有方法?

    从object-c 动态编译机制上讲是不存在私有变量和私有方法的.但是如果你不在.h中声明变量和方法在其它地方无法访问这些变量和方法,那么就成了私有的了.私有变量也可以使用@prviter进行修饰. ...

最新文章

  1. IO复用之epoll系列
  2. centos6.5下部署用于生产的hadoop,并使用C语言API连接hadoop
  3. 超维计算让AI有记忆和反应,还能解决自动驾驶难题
  4. [产品设计]为什么目前的运动手表的产品设计是错的?
  5. wxWidgets:wxSpinDoubleEvent类用法
  6. 使用html5+的plus调起相机拍照,使用canvas压缩图片,转成base64传到后台
  7. php的cms是什么意思,phpcms是什么系统
  8. Office 365系列之八:配置和体验Exchange和Lync
  9. 【Scratch】《零基础入门学习Scratch》(小甲鱼)笔记一
  10. python获取管理员权限
  11. 比特大陆60天 :夺权、立威下的疯狂裁员
  12. 演化模型(evolutionary model) 需求不明确+两次开发(实验开发+产品开发)
  13. Redis搭建及使用
  14. 光学字符识别 OCR (Optical Character Recognition)是什么?
  15. Detours库APIHook演示抓取微信界面绘制文字函数
  16. 微信小程序的wxml实现复杂运算或者数据处理
  17. python 正整数因数分解_Python正整数分解质因数
  18. 谷歌Project Glass:最新情报盘点
  19. 计算构成三角形的个数
  20. edge如何玩4399小游戏

热门文章

  1. DropWizard的AOP扩展点最佳实践
  2. 在大学之中,大部分学生都学不好C语言,是C语言越来越难学了吗?
  3. win7一直卡在正在启动windows
  4. java记忆纸牌 计分功能,怎样用数字编码记忆法记忆扑克牌
  5. Jmeter安装教程(windows)
  6. 一个关于laragon环境下多个laravel项目部署问题
  7. Ubuntu 20.04 服务器安装 R / RStudio / RStudio Server
  8. 突发!OpenAI 重磅发布 ChatGPT iOS 客户端!无须手续费,直接开通Plus。
  9. 【技术分享】无线通信LoRa扩频技术
  10. SCCB协议与IIC协议的对比