あらゆる種類の Python オブジェクトが与えられた場合、そのオブジェクトが持つすべてのメソッドのリストを取得する簡単な方法はありますか?
または、これが不可能な場合は、メソッドが呼び出されたときにエラーが発生するかどうかを確認する以外に、特定のメソッドがあるかどうかを確認する簡単な方法はありますか?
ベストアンサー1
多くのオブジェクトの場合、次のコードを使用して、「object」を目的のオブジェクトに置き換えることができます。
object_methods = [method_name for method_name in dir(object)
if callable(getattr(object, method_name))]
私はこれをダイブイントパイソン(現在はアーカイブされています)、さらに詳しい情報が得られるはずです。
を取得した場合はAttributeError
、代わりにこれを使用できます。
getattr()
pandas スタイルの Python 3.6 抽象仮想サブクラスには対応していません。このコードは上記と同じことを実行し、例外を無視します。
import pandas as pd
df = pd.DataFrame([[10, 20, 30], [100, 200, 300]],
columns=['foo', 'bar', 'baz'])
def get_methods(object, spacing=20):
methodList = []
for method_name in dir(object):
try:
if callable(getattr(object, method_name)):
methodList.append(str(method_name))
except Exception:
methodList.append(str(method_name))
processFunc = (lambda s: ' '.join(s.split())) or (lambda s: s)
for method in methodList:
try:
print(str(method.ljust(spacing)) + ' ' +
processFunc(str(getattr(object, method).__doc__)[0:90]))
except Exception:
print(method.ljust(spacing) + ' ' + ' getattr() failed')
get_methods(df['foo'])