1

我正试图在这里思考一些事情......假设我有一个简单的类继承设置:

class SuperClass(object):
    def __init__(self):
        self.var = 1

class SubClass(SuperClass):
    def getVar(self):
        return self.var

如果我有一个现有的实例SuperClass,有没有办法可以将它“转换”为SubClass,而无需创建新实例?

4

1 回答 1

2

在 Python 中,您没有cast运算符 - 您可以通过将类型分配给实例的__class__属性来解决此问题:

>>> super_instance = SuperClass()
>>> super_instance.__class__ = SubClass
>>> print super_instance.getVar()
1

但是,这比许多其他语言更容易出错,因为编译器未验证cast“”的有效性和安全性。cast

例如,如果SubClass有一个方法访问了一个不可用的属性,SuperClass那么尝试调用该方法super_instance会在运行时导致错误,即使它看起来SubClass.

于 2012-09-20T22:53:52.583 回答