基本上我想要两个类Trades
和HistoricalTrades
。第二个将是第一个的副本,并且没有更多的属性。在HistoricalTrades
上获取副本后,Trades
实例将被删除
我已经通过手动传递属性解决了这个问题
class Trades:
...
class HistoricalTrades:
...
k = Trades(price=123, amount=10)
h = HistoricalTrades(price=k.price, amount=k.amount, sell_date=k.sell_date)
k.delete()
它有点像预期的那样工作,但我觉得它不优雅。是否有其他(更好的)方法将类实例移动到其他类
对于这种特定情况,假设不使用
__slots__
,并且所使用的三个属性实际上是Trade
的唯一属性,您可以通过一个小欺骗来逃脱,更改:致:
^{} returns the ^{} of ^{} itself ,然后使用
**
将其解包到名称/值对中,作为要初始化HistoricalTrades
的关键字参数该解决方案有点笨拙(如前所述,它取决于不使用
__slots__
并且不具有任何其他属性)。实际上,实现这一点的好方法是为HistoricalTrades
定义一个替代构造函数,它可以为您完成这项工作,从而简化调用者的使用:是的,代码是相同的,但只编写了一次,每个呼叫站点都可以简化为:
既简洁又能自我记录
继承在这里听起来很有用:
但我认为我们需要更多的信息来为您提供更合适的答案
相关问题 更多 >
编程相关推荐