如何避免在python中创建对象?

use*_*578 6 python python-3.x

我是python编程的新手,我有一个类,对于这个类,我创建了一个对象(obj1).i不想创建除此对象之外的其他对象,如果有任何体想要为此类创建一个应该引用的对象到第一个对象(而不是再创建一个对象).如何做到这一点?请参考以下代码?

class MyClass:
   def __init__(self):
      pass
obj1=MyClass()//create object
obj2=MyClass()//avoid creation and refer obj2 to obj1
obj3=MyClass()//avoid creation and refer obj3 to obj1
Run Code Online (Sandbox Code Playgroud)

Thi*_*ter 7

所以你想要一些单身人士的东西?然后根本不要使用对象.简单地将函数放在一个单独的模块(.py文件)中,并将变量放在模块范围内(例如全局变量) - 如果你不需要线程安全,这就是你想做的事情的pythonic方法.记住:这不是java,并且使用类来实现一切都不是可行的方法.

但是,这里有一些代码只允许一个实例:

class MyClass:
    def __init__(self):
        if getattr(self.__class__, '_has_instance', False):
            raise RuntimeError('Cannot create another instance')
        self.__class__._has_instance = True
Run Code Online (Sandbox Code Playgroud)

如果你想要单身,看看Python和Singleton模式,是否有一种简单,优雅的方式来定义单身人士?

  • 同样,虽然讨论了其他问题:[Python is Not Java](http://dirtsimple.org/2004/12/python-is-not-java.html). (4认同)