专栏首页Python小屋Python编写只允许实例化一个对象的类

Python编写只允许实例化一个对象的类

>>> class T: __total = 0 def __init__(self, value): if T.__total != 0: raise Exception('You can only create one instanse') self.value = value T.__total += 1

>>> t1 = T(3)

# 实例化第二个对象时出错 >>> t2 = T(5) Traceback (most recent call last): File "<pyshell#8>", line 1, in <module> t2 = T(5) File "<pyshell#6>", line 5, in __init__ raise Exception('You can only create one instanse') Exception: You can only create one instanse

但是,由于Python对私有数据成员没有提供严格的访问控制保护机制,所以上面的代码无法避免下面的情况。

>>> T._T__total = 0 >>> t2 = T(5) >>> T._T__total = 0 >>> t3 = T(8) >>> t1 <__main__.T object at 0x0000018771177FD0> >>> t2 <__main__.T object at 0x0000018771177F98> >>> t3 <__main__.T object at 0x00000187711F8F98>

本文分享自微信公众号 - Python小屋(Python_xiaowu),作者:董付国

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-05-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python+django网页设计入门(6):文件上传与数据导入

    1、在网站项目的templates文件夹中创建文件uploadQuestions.html,内容如下:

    Python小屋屋主
  • 图解Python多修饰器时哪个先起作用

    修饰器本质上是一个函数,它接收一个函数作为参数并返回一个修饰过的新函数,一般来说不会改变函数的功能,只是在外围增加一些辅助性的检查或小功能。

    Python小屋屋主
  • Python+numpy实现蒙特卡罗方法估计圆周率近似值

    问题描述:使用蒙特卡罗方法估计圆周率近似值,具体描述详见以前发的文章 蒙特.卡罗方法求解圆周率近似值原理与Python实现

    Python小屋屋主
  • 3分钟教会你如何发布Qt程序

    导读:Qt程序编写好以后该如何发布。本文教你使用Qt自带工具windeployqt来进行操作。

    Coding十日谈
  • Java微信公众平台开发(九)--微信自定义菜单的创建实现 (一)使用网页调试工具生成菜单(二)采用代码实现菜单的生成

      自定义菜单这个功能在我们普通的编辑模式下是可以直接在后台编辑的,但是一旦我们进入开发模式之后我们的自定义菜单就需要自己用代码实现,所以对于刚开始接触的人来说...

    用户2417870
  • 消息中间件—RocketMQ消息消费(一)

    文章摘要:在发送消息给RocketMQ后,消费者需要消费。消息的消费比发送要复杂一些,那么RocketMQ是如何来做的呢? 在RocketMQ系列文章的前面几...

    用户2991389
  • JVM垃圾回收算法实现的方式

      通过前面的介绍我们清楚了JVM中对象是如何判断存活及垃圾回收算法。那么垃圾回收的算法到底是怎么实现的呢?因为HotSpot虚拟机在对对象回收的时候对执行的效...

    用户4919348
  • 从 RegExp 构造器看 JS 字符串转义设计

    上周接到一个需求,根据页面 url 来决定是否出现一个弹窗提示。为了方便管理这个特性,我将 url 列表配置在了后台,前端通过接口取得列表再进行校验。

    猫哥学前班
  • 2021-01-02:java中,MinorGC、MajorGC、FullGC 什么时候发生?

    MajorGC 指的是老年代的 GC,出现 MajorGC 一般经常伴有 MinorGC。

    福大大架构师每日一题
  • salesforce零基础学习(七十五)浅谈SOSL(Salesforce Object Search Language)

    在工作中,我们更多操作的是一个表的对象,所以我们对SOQL的使用很多。但是有时候,我们需要对几个表进行查询操作,类似salesforce的全局搜索功能,这时,使...

    用户1169343

扫码关注云+社区

领取腾讯云代金券