Python笔记Day7

如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__,在Python中,
实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问

class Student(object):def __init__(self, name, score):self.__name = nameself.__score = scoredef print_score(self):print('%s: %s' % (self.__name, self.__score))

但是如果外部代码要获取name和score怎么办?可以给Student类增加get_name和get_score这样的方法:

class Student(object):
...def get_name(self):return self.__namedef get_score(self):return self.__score

按照约定俗成的规定,当你看到这样的变量时,意思就是,“虽然我可以被访问,但是,请把我视为私有变量,不要随意访问:(_name)

不能直接访问__name是因为Python解释器对外把__name变量改成了_Student__name,所以,仍然可以通过_Student__name来访问__name变量

如果又要允许外部代码修改score怎么办?可以再给Student类增加set_score方法:

class Student(object):
...def set_score(self, score):self.__score = score

错误做法:

>>> bart = Student('Bart Simpson', 59)
>>> bart.get_name()
'Bart Simpson'
>>> bart.__name = 'New Name' # 设置__name变量!
>>> bart.__name
'New Name'

新增了__name变量,系统将__name 变成原来的__name变量没有改变

我们自己写的类,如果也想用len(myObj)的话,就自己写一个__len__()方法

>>> class MyDog(object):
...     def __len__(self):
...         return 100
...
>>> dog = MyDog()
>>> len(dog)
100

当实例对象做P[key]运算时,就会调用类中的__getitem__()方法。

#统计访问次数

class countlist:
def __init__ (self,*args):self.values = [x for x in args]self.count = {}.fromkeys(range(len(self.values)),0)def __len__(self):return len(self.values)def __getitem__(self,key):self.count[key] += 1return self.values[key]

华摄氏度转换:

class celsius:
def __init__(self,value = 26.0):self.value = float(value)def __get__(self,instance,owner):return self.valuedef __set__(self,instance,value):self.value = float(value)class fahrenheit:
def __get__(self,instance,owner):return instance.cel * 1.8 +32def __set__(self,instance,value):instance.cel = (float(value)-32)/1.8class temperature:
cel = celsius()
fah = fahrenheit()

Python修改私有变量、统计访问次数、华摄氏度转换相关推荐

  1. python定义私有变量的方法_Python怎么修改私有属性 如何访问python类中的私有方法...

    python 类为什么不能定义私有属性和方法 因为b.name[0] = 'zhang'修改的是类属性,类属性是全局的,所有的实例共享,如果想私有化,可以添加 def __init__( self ) ...

  2. Python 私有变量的访问和赋值

    首先我们这里先描述下: Python中,变量名类似__x__的,以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的(比如 __doc__, __init__等),不是priva ...

  3. python 私有变量得访问_Python 私有变量的访问和赋值

    首先我们这里先描述下: Python中,变量名类似__x__的,以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的(比如 __doc__, __init__等),不是priva ...

  4. python类私有变量

    python类,专栏总目录: 1.python面向对象编程class 2.python类多重继承 3.python类私有变量 4.python包私有变量__all__ 5.python类枚举 1.类l ...

  5. Java-根据IP统计访问次数

    JSP根据IP统计访问次数 本文简要介绍如何实现一个IP访问计数器. 为了简单, 使用 JSP 来实现, 但读者需要明白, Java代码可以在到处运行. 示例Demo页面: http://www.cn ...

  6. python定义私有变量的方法_浅谈Python中的私有变量

    私有变量表示方法 在变量前加上两个下划线的是私有变量.class Teacher(): def __init__(self,name,level): self.__name=name self.__l ...

  7. Python 中私有变量的定义和用法

    为什么设计私有变量 大多数 Python 代码都遵循这样一个约定:带有一个下划线的名称 (例如: _spam) 应该被当作是 API 的非公有部分 (无论它是函数.方法或是数据成员). 为了保证对于类 ...

  8. python定义私有变量的方法_Python私有变量的定义方法

    学过编程语言的人员,都知道私有变量在编程中必不可少,与Java和C语言用private关键字定义私有变量不同,Python是在变量前面加上双横杠(例如:__test)来标识, Python私有变量只能 ...

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

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

最新文章

  1. 【转】Linux Oracle服务启动停止脚本与开机自启动
  2. 干货 | XGBoost在携程搜索排序中的应用
  3. xshell启动报nssock2_nssock2.dll,下载,简介,描述,修复,等相关问题一站搞定_DLL之家
  4. Flutter React编程范式实践
  5. iOS 正则表达式判断纯数字以及匹配11位手机号码
  6. 【转】.NET 的 WebSocket 开发包比较
  7. linux显示系统信息软件下载,linux查看系统信息软件安装信息命令学习笔记
  8. [转载]【Java EE】Struts2.1.6与Spring2.5.6框架整合
  9. 收购YY直播,百度重返高位的关键布局
  10. jinja Evnironment
  11. git 客户端_适用于Mac的10个最佳GUI Git客户端
  12. Java Date Time 教程-System.currentTimeMillis()
  13. Keil3/4/5 For C51安装教程(附Baidu 云链接)
  14. 平安资管罗水权:建设债券投资的智慧中台
  15. 计算机图形图像处理应用教程,计算机图形图像处理——Photoshop实用教程
  16. 阿丹学理财之资产配置
  17. mysql dump gtid_GTID环境下mysqldump set-gtid-purged取值
  18. 3.4输入手写数字图片输出识别结果
  19. qt 模拟鼠标滑轮_【游戏流体力学基础及Unity代码(四)】用欧拉方程模拟无粘性染料之公式推导...
  20. UI设计趋势中的新拟物化图标设计素材模板

热门文章

  1. docker技术学习流程
  2. 周立功zlg600a 模块linux驱动
  3. 10万元4厘利息怎么算_10万利息4厘是多少钱
  4. 信息与通信的数学基础——Laplace变换
  5. 生命不息,折腾不止——新的起点
  6. 《去哪儿网支付系统架构演进全历程》阅读有感
  7. 跨境电商erp系统是什么?
  8. SQL CHECK 约束
  9. 八、影片添加页实现《仿淘票票系统前后端完全制作(除支付外)》
  10. MFC的Dlg和App什么区别?应用程序类与对话框类