0

我有一个从类类型和传入的内容创建对象的函数。

def create_from(cls, info):
    obj = cls.__new__(cls)
    obj.load_info(info)
    return obj

__new__在这里使用的原因是初始化对象所需的参数数量是不确定的。

它适用于我所有的类,除了我继承的类asyncio.Future

c = asyncio.Future
c.__new__(c)

将抛出 AttributeError 说: 'Future' 对象没有属性 '_callbacks' 。

我的问题是:

  1. 有没有更好的方法呢?
  2. 为什么__new__在 asyncio.Future 中会抛出这个错误?在我看来,__new__应该在不触及任何其他方法的情况下调用。
4

1 回答 1

0

目前,我选择为create_obj将在此场景中使用的所有类添加一个方法。通过实现类的asyncio.Future独立继承方法,我绕过了这个问题。

class mySavableFuture(asyncio.Future):

    @classmethod
    def create_obj(cls):
        return cls()

class SavableA():

    @classmethod
    def create_obj(cls):
        return cls.__new__(cls)

这似乎是一种妥协的方式,但它适用于我现在。期待更好的解决方案。

于 2020-04-12T15:22:58.880 回答