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:如果您让函数隐式执行,则可以。