python - 如何在python中不传递参数的情况下创建对象?
问题描述
我有一个从类类型和传入的内容创建对象的函数。
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' 。
我的问题是:
- 有没有更好的方法呢?
- 为什么
__new__
在 asyncio.Future 中会抛出这个错误?在我看来,__new__
应该在不触及任何其他方法的情况下调用。
解决方案
目前,我选择为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)
这似乎是一种妥协的方式,但它适用于我现在。期待更好的解决方案。
推荐阅读
- python - 为特定用户“多播”更新提要
- php - 由于会话超时,用户强制退出系统 - Yii
- python - 使用正确的字符编码进行抓取(python + request-HTML)
- html - 如何强制 Chrome 在网站上显示最新的图像更改
- python - 启动时运行 python 脚本的问题 | 覆盆子未连接到显示器 - Raspberry Pi
- types - 将 Rust 枚举变量转换为数字数据类型的含义是什么?
- web-scraping - 如何使用氦刮刀将多个数据点刮到单行
- variables - SAS TO COBOL 转换变量声明
- java - 使用 JpaRepository .findById() 方法获取请求和错误处理
- reactjs - 将 gatsby-source-graphcms 与 gatsby-plugin-react-i18next 一起使用:GraphCMS_Locale 变量类型问题