相关疑难解决方法(0)

238
推荐指数
8
解决办法
9万
查看次数

有没有办法在不调用__init__的情况下实例化一个类?

有没有办法绕过__init__python中的类的构造函数?

例:

class A(object):    
    def __init__(self):
        print "FAILURE"

    def Print(self):
        print "YEHAA"
Run Code Online (Sandbox Code Playgroud)

现在我想创建一个实例A.它可能看起来像这样,但是这种语法不正确.

a = A
a.Print()
Run Code Online (Sandbox Code Playgroud)

编辑:

一个更复杂的例子:

假设我有一个对象C,其目的是存储一个参数并对其进行一些计算.但是,该参数不是这样传递的,而是嵌入在一个巨大的参数文件中.它可能看起来像这样:

class C(object):
    def __init__(self, ParameterFile):
        self._Parameter = self._ExtractParamterFile(ParameterFile)
    def _ExtractParamterFile(self, ParameterFile):
        #does some complex magic to extract the right parameter
        return the_extracted_parameter
Run Code Online (Sandbox Code Playgroud)

现在我想转储并加载该对象的实例C.但是,当我加载这个对象时,我只有单个变量self._Parameter,我无法调用构造函数,因为它期望参数文件.

    @staticmethod
    def Load(file):
        f = open(file, "rb")
        oldObject = pickle.load(f)
        f.close()

        #somehow create newObject without calling __init__
        newObject._Parameter = oldObject._Parameter
        return newObject
Run Code Online (Sandbox Code Playgroud)

换句话说,如果不传递参数文件,则无法创建实例.在我的"真实"的情况,但是,它不是一个参数文件,但一些大数据的垃圾我当然不希望在内存中随身携带,甚至将其存储到光盘上.

因为我想C从方法返回一个实例,Load …

python constructor class instantiation

57
推荐指数
5
解决办法
4万
查看次数