我想知道如何将某个函数返回的父对象转换为子类。
class A(object):
def __init__():
pass
class B(A):
def functionIneed():
pass
i = module.getObject()# i will get object that is class A
j = B(i)# this will return exception
j.functionIneed()
我无法更改类A。如果可以,我会将Functionined实现为类A,但由于代码的结构,这是不可能的。
谢谢
Tags:
我有一个强烈的怀疑,不,信念,你的程序设计有可怕的错误,它需要你这样做。在Python中,与Java不同的是,很少有问题需要类来解决。如果您需要一个函数,只需定义它:
但是,如果我不能劝阻您将函数设为类的方法,您可以通过设置实例的
__class__
属性来更改实例的类:只要B没有
__init__
方法,这就可以工作,因为很明显,__init__
永远不会被调用。你说你想实现这样的目标:
但实际上,您要做的是更像这样的东西(除非您最初打算创建一个class或static方法):
然后您可以调用} explicitly to methods. 的优点之一)
B.functionIneed(instance_of_A)
。(这是必须pass ^{Python不支持“casting”。您将需要编写
B.__init__()
,以便它可以使用A
并适当地初始化自身。相关问题 更多 >
编程相关推荐