如何扩展现有的python实例

时间:2012-09-20 22:48:06

标签: python

我正在尝试将我的大脑包裹在这里...让我们说我有一个简单的类继承设置:

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

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

如果我有SuperClass的现有实例,是否可以将其“投射”为SubClass,而无需创建新实例?

1 个答案:

答案 0 :(得分:2)

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

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

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

例如,如果SubClass有一个方法访问了SuperClass上没有的属性,那么尝试在super_instance上调用该方法会导致运行时出错,即使出现SubClass的有效实例。