python类重载构造函数_Python:多重继承、复制构造函数、类初始化和()重载

好吧,您不想创建一个实例来创建一个新实例,所以您可能需要一个classmethod或{}。这里也不是使用__call__的地方。在

我可以这样做:class MyChild(MyBase1, MyBase2):

@classmethod

def build_from_bases(klass, base1, base2, **kwargs):

kwargs.update(base1.__dict__)

# Note if base2 has values for x and y, they will clobber what was in base1

kwargs.update(base2.__dict__)

return klass(**kwargs)

但是使用Base1和Base2的实例来构建MyChild的实例并不像我在python中所做的那样。更可能使用显而易见的:

^{pr2}$

真的,我更喜欢这样,现在我不必担心那些令人震惊的价值观,或者其他奇怪的东西。在

如果你真的想要捷径的话,你可以把两者结合起来:class MyChild(MyBase1, MyBase2):

@classmethod

def build_from_bases(klass, base1, base2, **kwargs):

return klass(x=base1.x, y=base1.y, s=base2.s, p=base2.p, **kwargs)

在python中,“聪明”往往是“更好”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值