擅长:python、mysql、java
<p>您可以通过将代码拆分为两个独立的类来解决此问题。在</p>
<p>第一个类将用于您尝试创建的对象:</p>
<pre><code>class MyClass(object):
def __init__(self, name):
self.Name = name
</code></pre>
<p>第二个类将创建对象并跟踪它们:</p>
^{pr2}$
<p>这样,您就可以根据需要创建类的新实例,但有关所创建类的信息仍然是正确的。在</p>
<pre><code>>>> x = MyClassFactory.Build("Hello")
>>> MyClassFactory.Counter
1
>>> MyClassFactory.LastValue
'Hello'
>>> y = MyClassFactory.Build("Goodbye")
>>> MyClassFactory.Counter
2
>>> MyClassFactory.LastValue
'Goodbye'
>>> x.Name
'Hello'
>>> y.Name
'Goodbye'
</code></pre>
<p>最后,这种方法避免了实例变量隐藏类变量的问题,因为MyClass实例不知道创建它们的工厂。在</p>
<pre><code>>>> x.Counter
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'MyClass' object has no attribute 'Counter'
</code></pre>