:
>>> class Cls:
... def foo(self):
... pass
...
>>> obj = Cls()
>>> obj.foo
<bound method Cls.foo of <__main__.Cls object at 0x101d8f588>>
>>> dir(obj.foo)
['__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__func__', '__ge__', '__get__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
>>> obj.foo.__func__
<function Cls.foo at 0x101d92400>
>>> obj.foo.__func__ is Cls.foo
True
オブジェクトのdir()
てみるには、探求し、潜在的に有用な属性を探すための簡単な方法です。 Pythonの2.7.35で
'ID(Cls.foo)== ID(OBJ。 foo)#returns true '? –
これは**良い質問です**(潜在的な回答は言語に関する貴重な洞察を教えてくれるでしょう)**あなたのテストでこれを主張することは、しばしば悪いアイデアとなります。その行動よりむしろ内在。 (具体的なコンテキストにもよりますが、反射を利用する独自のORMをテストしている場合は、このようなテストは意味をなさないことがあります) –
これは私のアプリケーションで(サブパーザを使って)引数を解析するためのテストです'args.command'が与えられたサブパーザのための 'the'コマンドであることを確かめたい(それぞれのサブパーザは別々のクラスです)。実際のテストコードのスニペット: 'assert args.command .__ func__ == commands.TransferCommand.command .__ func__' –