相关疑难解决方法(0)

静态类变量是否可能?

是否有可能在python中有静态类变量或方法?这样做需要什么语法?

python oop static class class-variables

1824
推荐指数
20
解决办法
114万
查看次数

是否有一种简单,优雅的方式来定义单身人士?

似乎有很多方法可以在Python中定义单例.Stack Overflow是否有共识?

python singleton design-patterns

427
推荐指数
13
解决办法
27万
查看次数

如何避免全局变量

当阅读python文档和各种邮件列表时,我总是阅读看起来有点像教条的内容.全局变量应该像地狱一样避免,它们设计很差......好吧,为什么不呢?但是有一些真实的生活情况,我不知道如何避免这种模式.

假设我有一个GUI,可以从主菜单中加载几个文件.可以在所有GUI(例如,将显示图像并且可以通过不同对话框/插件在其上执行各种动作的图像查看器)上使用与加载的文件相对应的文件对象.

构建以下设计是否有问题:

  • Menu.py - >文件将从这里加载
  • Main.py - >可以在这里使用加载的文件对象
  • Dialog1.py - >或在这里
  • Dialog2.py - >或那里
  • Dialog3.py - >或那里
  • ...
  • Globals.py

其中Globals.py将存储一个字典,其字符是已加载文件的名称和相应文件对象的值.然后,从那里,需要这些数据的代码的各个部分将通过弱引用访问它.

对不起,如果我的问题看起来(或是)很愚蠢,但你看到任何优雅或全球免费的替代品吗?一种方法是将加载的数据字典封装在Main.py的主应用程序类中,将其视为GUI的中央访问部分.然而,这也会带来一些复杂性,因为这个类应该可以从所有需要数据的对话框中轻松访问,即使它们是必要的直接子代.

非常感谢你的帮助

python global-variables

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

你可以命名多少非GOF模式?

你能说出多少个不是GOF模式的设计模式?

你有任何列出这些名字的网页链接吗?

design-patterns

5
推荐指数
2
解决办法
2495
查看次数

单例python调用问题两次__init__

我有一个像这样的单身人士

class Singleton:

    class __impl:
        def __init__(self):
            print "INIT"

    __instance = None

    def __init__(self):
        # Check whether we already have an instance
        if Singleton.__instance is None:
            Singleton.__instance = Singleton.__impl()

        # Store instance reference as the only member in the handle
        self.__dict__['_Singleton__instance'] = Singleton.__instance

    def __getattr__(self, attr):
        """ Delegate access to implementation """
        return getattr(self.__instance, attr)

    def __setattr__(self, attr, value):
        """ Delegate access to implementation """
        return setattr(self.__instance, attr, value)
Run Code Online (Sandbox Code Playgroud)

当我做了几个Singleton的实例时,我得到了两个init的调用,我的意思是"INIT"被打印了两次,我觉得它不应该发生

有人知道这有什么问题或有更好的方法来实现这个?

python singleton init

4
推荐指数
2
解决办法
6470
查看次数

Python:在子类中更新父类的实例变量

我对此进行了很多搜索,但似乎找不到任何特定于我的问题的内容。

假设我有三个独立的 python 文件 fileA.py、fileB.py 和 fileMain.py

fileB.py 继承自 fileA.py。

文件A.py

class Parent():
    def __init__(self):
        self.valueA = 5
Run Code Online (Sandbox Code Playgroud)

文件B.py

from fileA import Parent

class Child(Parent):
    def __init__(self):
        Parent.__init__():
        self.valueB = 10

    def Calculate(self):
        self.result = self.valueB + self.valueA
        print(self.result)
Run Code Online (Sandbox Code Playgroud)

在 fileMain.py 中,我有一些代码在父类中的 valueA 更改后调用子类中的计算方法。

from fileA import Parent
from fileB import Child

class MainProgram():
    def __init__(self):
        self.parent = Parent()
        self.child = Child()

        self.parent.valueA = 8

        self.child.Calculate()

foobar=MainProgram()
Run Code Online (Sandbox Code Playgroud)

我的问题是,打印输出是 15 而不是 18。为什么?我怎样才能解决这个问题以获得预期的结果?

我希望 fileB.py 从 fileA.py 继承的原因是我计划让 fileC.py 也从 fileA.py 继承,并使用 …

python-3.x

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

为什么这个Python Borg/Singleton模式有效

我只是偶然发现网络,发现这些有趣的代码被剪掉了:

http://code.activestate.com/recipes/66531/

class Borg:
    __shared_state = {}
    def __init__(self):
        self.__dict__ = self.__shared_state
    # and whatever else you want in your class -- that's all!
Run Code Online (Sandbox Code Playgroud)

我理解单身是什么,但我不明白特定的代码被剪断了.你能解释一下"__shared_state"是如何/甚至根本改变的?

我在ipython中尝试过:

In [1]: class Borg:
   ...:         __shared_state = {}
   ...:     def __init__(self):
   ...:             self.__dict__ = self.__shared_state
   ...:     # and whatever else you want in your class -- that's all!
   ...: 
In [2]: b1 = Borg()
In [3]: b2 = Borg()
In [4]: b1.foo="123"
In [5]: b2.foo
Out[5]: '123'
In [6]: 
Run Code Online (Sandbox Code Playgroud)

但不能完全理解这是怎么发生的.

python singleton

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

python将类型绑定到变量

我是一个Python noob.

我按如下方式创建了一个类:

class t1:
    x = ''
    def __init__(self, x):
        self.x = x

class t2:
    y = ''
    z = ''
    def __init__(self, x, y, z):
        self.y = t1.__init__(x)
        self.z = z
Run Code Online (Sandbox Code Playgroud)

现在与C++或Java相反,我在编写类定义时不会将数据类型绑定到y.这只是因为构造函数代码表明y的类型为t1.我们可以在声明y的同时绑定数据类型吗?

python variables

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

不是一个具有类方法和属性的类是python中的单例吗?

我已经阅读了许多解释如何在python中实现单例的文章,比如 在Python中创建单例

我很想知道,不是一个带类方法的类,属性是一个单例类.

例如

class my_singleton_class(object):

    _logger = Logger ()   
    _printer = Printer ()

    @classmethod
    def logger(cls):
        return cls._logger

    @classmethod
    def printer(cls):
        return cls._printer
Run Code Online (Sandbox Code Playgroud)

它不是pythonic吗?这个单例实现有什么问题?

python python-2.7

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