擅长:python、mysql、java
<p>您可以通过使<code>Empty</code>成为<code>A</code>的嵌套类而不是类方法来实现所需的功能。最重要的是,它提供了一个方便的名称空间—从不创建它的实例—在其中放置各种可选构造函数,并且可以轻松地进行扩展。你知道吗</p>
<pre><code>class A(object):
def __init__(self, a, b):
self.a = a
self.b = b
def __repr__(self):
return 'A({}, {})'.format(self.a, self.b)
class Empty(object): # nested class
def __new__(cls, b):
return A(0, b) # ignore cls & return instance of enclosing class
@staticmethod
def TypeI(b):
return A(0, b-1)
@staticmethod
def TypeII(b):
return A(0, b-2)
a = A(1, 1)
print('a: {}'.format(a)) # --> a: A(1, 1)
b = A.Empty(2)
print('b: {}'.format(b)) # --> b: A(0, 2)
bi = A.Empty.TypeI(4)
print('bi: {}'.format(bi)) # --> bi: A(0, 3)
bii = A.Empty.TypeII(6)
print('bii: {}'.format(bii)) # --> bii: A(0, 4)
</code></pre>