相关疑难解决方法(0)

Python单例 - 你如何在你的测试平台中摆脱(__del__)它们?

非常感谢您迄今为止给我的建议.使用测试平台是这个论坛真正向我展示的亮点,因为我很感激.我的问题是我正在玩一个单身人士,通常我不会对它进行分析,但在测试平台中我需要这样做.所以有人能告诉我如何去做这件事吗?我已经开始使用一个基本示例并将其构建到测试平台中,以便我可以看到最新情况.现在我不知道怎么摆脱它!

非常感谢!!

import sys
import logging
import unittest

LOGLEVEL = logging.DEBUG

class Singleton:
    """ A python singleton """

    class __impl:
        """ Implementation of the singleton interface """
        def __init__(self):
            self.log = logging.getLogger()
            self.log.debug("Init %s" % self.__class__.__name__)

        def id(self):
            """ Test method, return singleton id """
            return id(self)


    # storage for the instance reference
    __instance = None

    def __init__(self):
        """ Create singleton instance """
        # Check whether we already have an instance
        if Singleton.__instance is None:
            # Create and …
Run Code Online (Sandbox Code Playgroud)

python singleton unit-testing

1
推荐指数
1
解决办法
3352
查看次数

提供对象实例的全局访问点

想象一个系统(Python),其中不同的部分不断地与给定对象的一个​​实例交互.为此实例提供全局访问点的最佳方法是什么?

到目前为止,我只能想到建设中的(辛格尔顿)实例__init__.pyimport模块的需要:

# __init__.py
class Thing(object, Singleton):
 pass

TheThing = Thing()

__all__ = ['TheThing']  
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来提供全局访问点TheThing

谢谢,

J.

python global-variables

1
推荐指数
1
解决办法
4582
查看次数

这个单身人士出了什么问题?

目前我正在使用一个相当简单的单例实现.但是,我从来没有在网上看到过这样的建议,这让我觉得它可能有问题......

class Singleton:
    def __init__():
        raise ...

    @staticmethod
    def some():
        pass

    @staticmethod
    def another():
        pass
Run Code Online (Sandbox Code Playgroud)

单例的这种实现是否有任何缺点(使所有类成员都是静态的).它有点类似于使用模块作为单例,除了你把所有东西都包装在一个类中.


编辑:我知道在Python中实现单例的其他方法.我不喜欢它们的是它们都不是显式的(这违背了Python zen):

因为我做的a = Class()不是类似的事情a = Class.Instance(),所以我在处理具有共享状态的对象时并不明显(参见注释#1).如果所有成员都是静态的,我至少有Class.someMethod()哪种类型表明它是单身.我不喜欢这种方法的是你不能使用构造函数和析构函数,它消除了单例对自由函数的主要优势,这是你在创建和销毁它们时可以做的事情(参见注释#2) .

注意#1:我知道我不应该关心单身人士的状态(如果我这样做,那么它首先不应该是单身人士).我仍然希望明确它是什么类.

注意#2:创建单例时,可以在其构造函数中进行一些实例化.例如,在处理图形库的单例中,您可以在constrctor中初始化库.这种方式实例化和解除实例在sinleton的构造函数和析构函数中自动发生.
或者在ResourceManager中:析构函数可以检查在销毁时是否仍然存在内存中的资源并相应地执行操作.
如果你使用自由函数而不是单例,你必须手动完成所有这些.

python singleton

1
推荐指数
1
解决办法
639
查看次数

什么语法更适合python!=或不是?

例如:

match = re.search('...', str, re.IGNORECASE)
if match is not None:
    pass

# or
if match != None:
    pass
Run Code Online (Sandbox Code Playgroud)

什么是更好的?

python

1
推荐指数
1
解决办法
173
查看次数

在Python中,如何使用单例模式?

我的代码是:

  class Handler():

        # make it static
        from pymongo import MongoClient
        client = MongoClient("localhost", 27017)
        db = client.newsdb
        news = db.news
Run Code Online (Sandbox Code Playgroud)

我想让 client 变量成为静态变量,那么上面的代码是正确的方法吗?我也想使用单例模式,因为也许 MongoClient 是非常大的元素,当我真正需要它时我想 new() 这个元素......

我怎样才能在 python 中做到这一点?作为一个初学者,可能会问一些愚蠢的问题,提前抱歉......

python

1
推荐指数
1
解决办法
1971
查看次数

python中的Singleton类

在Python中如何实现单属性it.Please以下class.What我基本上是想了解提供了一个例子一类是,如果存在的话类的实例,它应该返回现有实例创建其他的实例那个班

  class Test:
     name
     age

     def getobj(self):
        return (self.name+self.age)

    t= Test()
Run Code Online (Sandbox Code Playgroud)

python

0
推荐指数
1
解决办法
1138
查看次数