您可以将使用的实例保存在类属性中。

无论何时要重置类,请将新实例重新指派给该属性。

下面是我将如何实现这种方法:class Foo:

instance = None # The single instance

def __init__(self, ...):

# Initialize the instance if Foo.instance does not exist, else fail

if type(self).instance is None:

# Initialization

type(self).instance = self

else:

raise RuntimeError("Only one instance of 'Foo' can exist at a time")

@classmethod

def reset(cls):

cls.instance = None # First clear Foo.instance so that __init__ does not fail

cls.instance = Foo(...) # Now the initialization can be called

然后,您可以通过简单地引用Foo.instance来访问实例。

我选择将reset作为类方法,因此由@classmethod修饰。

使用这个decorator,可以通过调用Foo.reset()重置实例,并且cls参数将自动传递给该方法。

我更喜欢这种方法(或多或少是一种单例模式)而不是您建议的方法,因为在您的情况下,似乎有一个Foo的实例是合乎逻辑的,因为您希望重置它。

因此,我发现“强制”使用单个实例是相当直观的。

另一方面,可以在类之外有一个实例,并使用一个reset实例方法,定义如下:def reset(self):

self.__init__()

但这可能不太管用。

假设您想在__init__方法之外设置属性。

调用__init__不会重置这些属性。

因此,您的实例将不会按预期重置。

现在,如果您持有一个实例并将其重新分配给一个全新的实例,那么您肯定它将是绝对干净的。

关于您所说的“创建新实例”,这或多或少是我选择的,但问题是在哪里存储它。

我认为在课堂上保持温暖是有意义的。

顺便说一句,这个解决方案不应该有任何性能问题(如“内存泄漏”),因为一次只引用一个Foo实例,而创建一个新实例将取消对前一个实例的引用。

python中reset_在Python中重置类的首选方法相关推荐

  1. python中的pylab_在Python2.7中,在函数级导入pylab的首选方法是什么?

    我用python编写了一个相对简单的函数,可以用来绘制一个数据集的时域历史以及一个数据集在快速傅立叶变换后的频域响应.在这个函数中,我使用命令from pylab import *引入所有必要的功能. ...

  2. php中使用kindeditor,Thinkphp编辑器扩张类kindeditor使用方法

    Thinkphp编辑器扩展类kindeditor使用方法 一, 使用前的准备. 使用前请确认你已经建立好了一个Thinkphp网站项目. 1,Keditor.class.php和JSON.class. ...

  3. python多线程返回值问题重写Thread类的run方法

    python多线程使用 文章目录 python多线程使用 一.案例 二.说明 1.针对第一种是有返回值的 ,可以通过future.result() 去拿到每个线程返回值 2.无返回值问题 3.我们可以 ...

  4. java作用域外调用对象,Java Web应用中往往通过设置不同作用域的属性来达到通讯的目的。 如果某个对象只在同一请求中共享,通过调用哪个类 的setAttribute方法设置属性。( )...

    [多选题]客源市场定位的依据包括(). [单选题]除了诗歌创作,作者的散文成就同样引人注目,其代表性的散文集是( )? [单选题]缩窄性心包炎指各种原因引起心包脏壁层炎症.纤维素性渗出物沉积,并逐渐机 ...

  5. 【Python】经典问题创建一个矩形类,定义方法 属性 初始化

    Hello,大家好,我是乔乔白术!今天还是处理一些我们的习题. # 定义一个矩形类Rectangle: #a. 定义三个方法:get_area()求面积.get_per()求周长,show_all() ...

  6. python类中的属性分为类属性和实例属性两种_python从入门到大神---1、初始化实例、类属性、方法...

    python从入门到大神---1.初始化实例.类属性.方法 一.总结 一句话总结: 方法不加括号是代码段:感觉python方法和js,php很类似,不加括号是代码段,加括号变成方法,比如f,f() 1 ...

  7. python class object_【python系统学习13】类(class)与对象(object)

    目录: 类(class)和实例 类 整数.字符串.浮点数等,不同的数据类型就属于不同的类. 想想看当初学数据类型,我们用type验证数据类型后打印的结果 忘了就再来看看: strs = '字符串' i ...

  8. Python的Django框架中forms表单类的使用方法详解2

    用户表单是Web端的一项基本功能,大而全的Django框架中自然带有现成的基础form对象,本文就Python的Django框架中forms表单类的使用方法详解. Form表单的功能 自动生成HTML ...

  9. python创建类的实例方法-Python中动态创建类实例的方法

    简介 在Java中我们可以通过反射来根据类名创建类实例,那么在Python我们怎么实现类似功能呢? 其实在Python有一个builtin函数import,我们可以使用这个函数来在运行时动态加载一些模 ...

最新文章

  1. AI 产品经理的三重门
  2. python3 base64 加解密
  3. yii框架的下拉框多选,设置默认值等(dropDownList)
  4. mybatis plus 日志打印_mybatis升级为mybatis-plus踩到的坑
  5. 数据库表初始化,删除所有数据后主键ID从1开始
  6. 蓝桥杯 java 组素数,2018 蓝桥杯省赛 B 组模拟赛(五) B 结果填空:素数个数
  7. 【转】JMeter学习(二十七)Jmeter常见问题
  8. 盘点常用Java排序算法
  9. 平面/UI设计师社区交流网站集设|给你的作品多一个展示机会
  10. latex \textsuperscript{\dagger} 报错
  11. JAVA学习笔记_StringUtil.isEmpty_null不是null
  12. postgresql源码学习(十)—— 常规锁③-主锁表与进程锁表的初始化与查询
  13. 网络发现已关闭。网络计算机和设备不可见。请启用网络和共享中心中的网络发现。
  14. python全栈工程师熟练的技巧
  15. JavaFx之横向布局左右两侧对齐(十九)
  16. iOS22 地图定位- 苹果自带地图
  17. Training generative adversarial networks with limited data.
  18. 微商怎么从小白开始学发圈
  19. 内网渗透系列之mimikatz的使用以及后门植入
  20. 苹果锁屏 android,安卓版picsart锁屏教程 无需root做成苹果的解锁图文教程

热门文章

  1. 日期计算器-java(含界面)
  2. 基于JAVA的日期计算器
  3. 计算机毕业设计Java宠物爱心驿站(源码+系统+mysql数据库+lw文档)
  4. linux usb只读文件系统,linux文件系统只读
  5. 二级计算机为让利消费者,2016年职称计算机考试Excel操作题及答案22
  6. 化学实验学术报告PPT答辩模板
  7. Hprose 是轻量级跨语言跨平台的面向对象的高性能远程动态通讯中间件
  8. 不懂应该怎么选合适的医疗器械进销存?
  9. python提取abaqus中ODB文件的场信息
  10. 【转】网站公安备案之详细流程