はじめに
Rubyのpメソッドみたいなものがpythonにないのかなぁ、と調べた結果です。
結果
vars関数を使えば似たような動きをしました!
Googleで「Ruby Python p 代替」で調べても出てきません。(調べ方が悪い)
「python オブジェクト ダンプ」で参考ページが出てきました!
似たような感じでvarsにたどり着いていない方に共有です。
とあるクラスのインスタンスaをprintで表示すると以下のようになります。
printの場合
>>> print(a)
<QuerySet [<Project: aaa>, <Project: bbb>, <Project: ccc>]>
このインスタンスaのプロパティが何かわかってなくて、内容を見たいんだ!(自分の実装を忘れてしまう私のような人はあまりいませんかね…)
って時にvarsを使います。
varsの場合
>>> vars(a[0])
{'_state': <django.db.models.base.ModelState object at 0x04318C50>, 'id': 1, 'name': 'aaa', 'description': 'aaa', 'created_date': datetime.datetime(2019, 4, 10, 3, 17, 58, tzinfo=<UTC>), 'owner': 1}
すばらしいです…!
a[0]って添え字を指定しているので、全部出したい人はeach等使って、くるくる回してください。
更に、値やメソッドの名前だけを知りたい場合、dir関数を使えばよいとのこと、アドバイスを頂きました。
(shiracamusさんありがとうございます!)
dirの場合
>>> dir(a[0])
['DoesNotExist', 'MultipleObjectsReturned', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_check_column_name_clashes', '_check_field_name_clashes', '_check_fields', '_check_id_field', '_check_index_together', '_check_indexes', '_check_local_fields', '_check_long_column_names', '_check_m2m_through_same_relationship', '_check_managers', '_check_model', '_check_model_name_db_lookup_clashes', '_check_ordering', '_check_property_name_related_field_accessor_clashes', '_check_single_primary_key', '_check_swappable', '_check_unique_together', '_do_insert', '_do_update', '_get_FIELD_display', '_get_next_or_previous_by_FIELD', '_get_next_or_previous_in_order', '_get_pk_val', '_get_unique_checks', '_meta', '_perform_date_checks', '_perform_unique_checks', '_save_parents', '_save_table', '_set_pk_val', '_state', 'check', 'clean', 'clean_fields',
'created_date', 'date_error_message', 'delete', 'description', 'from_db', 'full_clean', 'get_deferred_fields', 'get_next_by_created_date', 'get_previous_by_created_date', 'id', 'name', 'objects', 'owner', 'pk', 'prepare_database_save', 'refresh_from_db', 'save', 'save_base', 'serializable_value', 'sheets', 'unique_error_message', 'validate_unique']
なんでも調べられますね…ッ!
参考
こちらのページがそのものズバリでした。
https://minus9d.hatenablog.com/entry/2015/08/02/204226