Python修改私有变量、统计访问次数、华摄氏度转换
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修改私有变量、统计访问次数、华摄氏度转换相关推荐
- python定义私有变量的方法_Python怎么修改私有属性 如何访问python类中的私有方法...
python 类为什么不能定义私有属性和方法 因为b.name[0] = 'zhang'修改的是类属性,类属性是全局的,所有的实例共享,如果想私有化,可以添加 def __init__( self ) ...
- Python 私有变量的访问和赋值
首先我们这里先描述下: Python中,变量名类似__x__的,以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的(比如 __doc__, __init__等),不是priva ...
- python 私有变量得访问_Python 私有变量的访问和赋值
首先我们这里先描述下: Python中,变量名类似__x__的,以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的(比如 __doc__, __init__等),不是priva ...
- python类私有变量
python类,专栏总目录: 1.python面向对象编程class 2.python类多重继承 3.python类私有变量 4.python包私有变量__all__ 5.python类枚举 1.类l ...
- Java-根据IP统计访问次数
JSP根据IP统计访问次数 本文简要介绍如何实现一个IP访问计数器. 为了简单, 使用 JSP 来实现, 但读者需要明白, Java代码可以在到处运行. 示例Demo页面: http://www.cn ...
- python定义私有变量的方法_浅谈Python中的私有变量
私有变量表示方法 在变量前加上两个下划线的是私有变量.class Teacher(): def __init__(self,name,level): self.__name=name self.__l ...
- Python 中私有变量的定义和用法
为什么设计私有变量 大多数 Python 代码都遵循这样一个约定:带有一个下划线的名称 (例如: _spam) 应该被当作是 API 的非公有部分 (无论它是函数.方法或是数据成员). 为了保证对于类 ...
- python定义私有变量的方法_Python私有变量的定义方法
学过编程语言的人员,都知道私有变量在编程中必不可少,与Java和C语言用private关键字定义私有变量不同,Python是在变量前面加上双横杠(例如:__test)来标识, Python私有变量只能 ...
- python定义私有变量的方法_Python面向对象程序设计之私有变量,私有方法原理与用法分析...
本文实例讲述了Python面向对象程序设计之私有变量,私有方法原理与用法.分享给大家供大家参考,具体如下: 私有变量,私有方法:python的私有化是为了规划私有属性,避免非相关的访问[假如!我有老婆 ...
最新文章
- 【转】Linux Oracle服务启动停止脚本与开机自启动
- 干货 | XGBoost在携程搜索排序中的应用
- xshell启动报nssock2_nssock2.dll,下载,简介,描述,修复,等相关问题一站搞定_DLL之家
- Flutter React编程范式实践
- iOS 正则表达式判断纯数字以及匹配11位手机号码
- 【转】.NET 的 WebSocket 开发包比较
- linux显示系统信息软件下载,linux查看系统信息软件安装信息命令学习笔记
- [转载]【Java EE】Struts2.1.6与Spring2.5.6框架整合
- 收购YY直播,百度重返高位的关键布局
- jinja Evnironment
- git 客户端_适用于Mac的10个最佳GUI Git客户端
- Java Date Time 教程-System.currentTimeMillis()
- Keil3/4/5 For C51安装教程(附Baidu 云链接)
- 平安资管罗水权:建设债券投资的智慧中台
- 计算机图形图像处理应用教程,计算机图形图像处理——Photoshop实用教程
- 阿丹学理财之资产配置
- mysql dump gtid_GTID环境下mysqldump set-gtid-purged取值
- 3.4输入手写数字图片输出识别结果
- qt 模拟鼠标滑轮_【游戏流体力学基础及Unity代码(四)】用欧拉方程模拟无粘性染料之公式推导...
- UI设计趋势中的新拟物化图标设计素材模板