2
在Python3.4:爲什麼類型(mock.MagicMock())== mock.MagicMock返回False?
>>> import mock.MagicMock
>>> type(mock.MagicMock()) == mock.MagicMock
False # Huh, why is that?
>>> isinstance(mock.MagicMock(), mock.MagicMock)
True
當我簡化這A
類B
我type(B()) == B
回報True
:
>>> class A: pass
>>> class B: pass
>>> class C(A, B): pass
>>> type(B()) == B
True # Of course I would say.
爲什麼返回type(mock.MagicMock()) == mock.MagicMock
False
?我知道Python中的difference between isinstance()
and type()
。 type()
不明白子類別isinstance
的作用。但我不明白這裏涉及的是什麼差別。
sourcemock.MagicMock
。
請注意,類型(B())== B'在Python 2.7中爲「False」。 – 2014-10-11 22:36:05
也許是另外一個問題,爲什麼? – OrangeTux 2014-10-11 22:36:47
@Simeon Visser和@OrangeTux在Python 3之前,'class C():pass'產生了一箇舊式類。每個舊式類都是類「classob」(而不是類「類型」)的實例,任何舊式類的每個*實例都是類「實例」的實例,而不是用於創建它的類。老式的類在3.0中被刪除了,所以'class C():pass'與'class C(object):pass'在2.2+中仍然是3.x,'type'的一個實例。 – 2014-10-12 01:15:25