我正试图在这里思考一些事情......假设我有一个简单的类继承设置:
class SuperClass(object):
def __init__(self):
self.var = 1
class SubClass(SuperClass):
def getVar(self):
return self.var
如果我有一个现有的实例SuperClass
,有没有办法可以将它“转换”为SubClass
,而无需创建新实例?
我正试图在这里思考一些事情......假设我有一个简单的类继承设置:
class SuperClass(object):
def __init__(self):
self.var = 1
class SubClass(SuperClass):
def getVar(self):
return self.var
如果我有一个现有的实例SuperClass
,有没有办法可以将它“转换”为SubClass
,而无需创建新实例?
在 Python 中,您没有cast
运算符 - 您可以通过将类型分配给实例的__class__
属性来解决此问题:
>>> super_instance = SuperClass()
>>> super_instance.__class__ = SubClass
>>> print super_instance.getVar()
1
但是,这比许多其他语言更容易出错,因为编译器未验证cast
“”的有效性和安全性。cast
例如,如果SubClass
有一个方法访问了一个不可用的属性,SuperClass
那么尝试调用该方法super_instance
会在运行时导致错误,即使它看起来是SubClass
.