python把a当作b_在python中将“A”类型的对象作为“B”类型的实例

2种可能性

代替isinstance(second, A)做isinstance(second.obj, A)

第二。。。更老套的做法是这样做:class B:

def __init__(self, obj):

self.obj = obj # obj is any object

self.__class__ = obj.__class__

这是一个很愚蠢的例子,因为这是一个很愚蠢的例子。即isinstance(second, B)将返回{}

为了回答下面提出的问题:解释器将基本上表现为second是一个类A,并且{}中在类级别定义的任何内容都不会保留。如果你做类似的事情

^{pr2}$

在使用解释器进行一些调用时,使用与上面初始化相同的代码。一般情况下,任何类变量或方法都将被删除并使用A'a,但是任何实例变量都会被记住。因此,self.obj = obj有点多余。基本上,实例化B(obj)将或多或少地返回与obj相同类的对象。虽然它不会调用obj的__init__,但是你需要更多的伏都教/魔法(如果你感兴趣的话,就发布)。在>>> isinstance(second, A)

True

>>> isinstance(second, B)

False

>>> second.a

1

>>> second.b

Traceback (most recent call last):

File "", line 1, in

second.b

AttributeError: A instance has no attribute 'b'

>>> second.someFunc()

Traceback (most recent call last):

File "", line 1, in

second.someFunc()

AttributeError: A instance has no attribute 'someFunc'

>>> second.b2

5

>>> second.obj

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值