Python 类方法作为自创建对象构造函数
'我正在使用代码来管理远程存储上的对象,这意味着我可以创建从存储读取的对象,也可以创建在创建时发送到存储的对象。这里的真正目标是仅在远程存储上存在对象表示时创建对象-如果远程存储上没有表示,则不会创建对象Python 类方法作为自创建对象构造函数,python,Python,'我正在使用代码来管理远程存储上的对象,这意味着我可以创建从存储读取的对象,也可以创建在创建时发送到存储的对象。这里的真正目标是仅在远程存储上存在对象表示时创建对象-如果远程存储上没有表示,则不会创建对象 class myClass: def __init__(self, parameter1, parameter2) self.param1 = parameter1 self.param2 = parameter2 @classmethod def create(
class myClass:
def __init__(self, parameter1, parameter2)
self.param1 = parameter1
self.param2 = parameter2
@classmethod
def create(parameter1, parameter2):
if SendToRemoteStore(parameter1, parameter2) == True:
return myClass(parameter1, parameter2)
else:
return None
def __del__():
DeleteFromRemoteStore(self)
# Two ways to create an instance
# As the result of a remote read:
data = GetFromRemoteStore()
object1 = myClass(data['foo'], data['bar'])
# Or if I'm creating the object here and
# need to save it to store on creation:
object2 = myClass.create('baz', 'bar')
没必要
class myClass(object):
def __new__(cls, parameter1, parameter2):
if SendToRemoteStore(parameter1, parameter2):
return super(myClass, cls).__new__(cls)
else:
return None
def __init__(self, parameter1, parameter2):
self.param1 = parameter1
self.param2 = parameter2
def __del__(self):
DeleteFromRemoteStore(self)
另外:不要依赖
\uuu del\uuuu
做任何相关的事情-在处理完对象后显式地处理它们,可能为了方便起见添加一个,如果某个对象没有正常处理,则在\uuu del\uuuu
中发出警告。嘿,我不知何故省略了问题的问题部分-这真的是“我做错了吗?”通常,本地对象充当远程对象的代理,因此当远程对象不存在时,本地代理应该引发ConnectionError。您可以从中寻找一些设计灵感。else
子句不是必需的。@Robin:“显式优于隐式。”我不确定从\uuuu new\uuuuu
返回None
是否可以满足您的要求。@doublep:您看过问题中的代码示例了吗?@Robin:如果您让函数隐式执行,则可以。