擅长:python、mysql、java
<p>应该定义两个类<code>X</code>和<code>Y</code>,以及一个工厂方法来实例化X或Y,具体取决于参数。你知道吗</p>
<p>一般来说,您尝试实现的行为有些混乱。创建实例时(这就是<code>X(...)</code>所做的),应该得到<code>X</code>的实例,并且类的实例应该具有相同的属性。这是类存在的主要原因之一。你知道吗</p>
<p>示例:</p>
<pre><code>class A:
def methodA(self):
return 5
class B:
def methodB(self):
return 10
def x(class_name):
name2class = {"A":A, "B":B}
return name2class[class_name]()
for name in ["A","B","C"]:
instance = x(name)
print name, instance
</code></pre>
<p>将打印</p>
<pre><code>A <__main__.A instance at 0x022C8D50>
B <__main__.B instance at 0x022C8DF0>
Traceback (most recent call last):
File ".../14834949.py", line 21, in <module>
instance = x(name)
File ".../14834949.py", line 18, in x
return name2class[class_name]()
KeyError: 'C'
</code></pre>