Pythonで、型名のみ取得する方法


Pythonのtype関数を利用すると、以下のように、型名だけでなく不等号記号などがついて表記されます。

[code]

    import pandas as pd
    data = pd.DataFrame()
    print(type(data))
    
[/code]

実行した結果、"<class 'pandas.core.frame.DataFrame'>"と表示されます。

また__name__プロパティでは、親の名前が取れないようです。

[code]

    print(type(data).__name__)
    
[/code]

実行した結果、"DataFrame"と表示されます。

不等号記号などを除外した、また親の名前を含めた、名前空間+クラス名を取得したいのですが、  
よりよい方法はないでしょうか。  
現在は、次のようにsplitで独自に切り取っています。  
もっとシンプルな方法があれば教えていただけないでしょうか。

[code]

    print(str(type(data)).split("'")[1]) # ←よりシンプルな方法ないでしょうか
    
[/code]

実行した結果、"pandas.core.frame.DataFrame"と表示されます。（←期待する結果です。）




こんな風にできます

[code]

    >>> cls = data.__class__
    >>> '.'.join([cls.__module__, cls.__name__])
    'pandas.core.frame.DataFrame'
    
[/code]




こんな風にできます

[code]

    >>> cls = data.__class__
    >>> '.'.join([cls.__module__, cls.__name__])
    'pandas.core.frame.DataFrame'
    
[/code]

