python init方法内实例化对象_python-是否有一种无需调用__init__即可实例化类的方法?...

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

例:

class A(object):

def __init__(self):

print "FAILURE"

def Print(self):

print "YEHAA"

现在,我想创建一个data的实例。它看起来像这样,但是此语法不正确。

a = A

a.Print()

编辑:

一个更复杂的示例:

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

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

现在,我想转储并加载该对象的实例data。但是,当加载该对象时,我只有单个变量__init__,并且我无法调用构造函数,因为它需要参数文件。

@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

换句话说,不传递参数文件就不可能创建实例。 但是,在我的“真实”情况下,它不是参数文件,而是一些巨大的数据垃圾,我当然不希望在内存中随身携带,甚至不希望将其存储到磁盘上。

并且由于我想从方法__init__返回data的实例,因此我必须以某种方式调用构造函数。

旧编辑:

一个更复杂的示例,它解释了为什么我要问这个问题:

class B(object):

def __init__(self, name, data):

self._Name = name

#do something with data, but do NOT save data in a variable

@staticmethod

def Load(self, file, newName):

f = open(file, "rb")

s = pickle.load(f)

f.close()

newS = B(???)

newS._Name = newName

return newS

如您所见,由于data没有存储在类变量中,所以我无法将其传递给__init__。当然我可以简单地存储它,但是如果数据是一个巨大的对象,而又不想在内存中随身携带,那该怎么办? 时间,甚至将其保存到光盘上?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值