单例类实例化:RecursionError:超过最大递归深度

时间:2019-03-08 04:01:14

标签: python-3.x design-patterns singleton

我正在尝试实现Singleton类。这是我的代码:

<table border="1">
			    
			    	<tr>
			    		<th>EMP_NAME</th>
			    		<th>EMP_ADDRESS</th>
			    		<th>EMP_AGE</th>
			    		<th>EMP_GENDER</th>
			    	</tr>
			        <tr>
			            <td>JOHN</td>
			            <td>STOCKON</td>
			            <td>32</td>
			            <td>MALE</td>
			        </tr>
			        <tr>
			            <td>BEA</td>
			            <td>GEORGIA</td>
			            <td>32</td>
			            <td>FEMALE</td>
			        </tr>
			    
			    	
			    
			</table>

我这样测试:

class ImageUtils:
__instance = None
def __init__(self):  
   """ Virtually private constructor. """
   if ImageUtils.__instance != None:
     raise Exception("This class is a singleton!")
   else:
     ImageUtils.__instance = self          

@staticmethod
def getInstance():
    """Static access method"""
    if ImageUtils.getInstance() == None:
        ImageUtils()
    return ImageUtils.__instance

我收到此错误:

s = ImageUtils()
print(s)

s = ImageUtils.getInstance()
print(s)

s = ImageUtils.getInstance()
print(s)

现在,当我在此处测试代码:Python Design Pattern Singletons时,它给了我打印出Singleton实例的内存位置三次的预期结果。

问题:当我复制并粘贴链接中给出的代码时,得到了预期的结果。但是,ImageUtils类的实现给了我RecursionError。这是为什么?非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

def getInstance():

if ImageUtils.getInstance() == None

应该是

if ImageUtils.__instance == None