正在使用代码来管理远程商店中的对象,这意味着我可以根据从商店中读取的结果创建对象,也可以创建在创建时发送到商店的对象。真正的目标是仅在存在远程存储上的对象表示形式时创建对象-如果远程存储上没有表示形式,则不会创建任何对象。

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)

关于python - 类方法作为自创建对象构造函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6403797/

10-12 21:33