あるクラスのインスタンスに存在する属性のリストを取得する方法はありますか?
class new_class():
def __init__(self, number):
self.multi = int(number) * 2
self.str = str(number)
a = new_class(2)
print(', '.join(a.SOMETHING))
望ましい結果は、"multi, str"が出力されることです。 これは、スクリプトの様々な部分から現在の属性を見るために必要です。
>>> class new_class():
... def __init__(self, number):
... self.multi = int(number) * 2
... self.str = str(number)
...
>>> a = new_class(2)
>>> a.__dict__
{'multi': 4, 'str': '2'}
>>> a.__dict__.keys()
dict_keys(['multi', 'str'])
また、pprintも参考になるでしょう。
何のためにこれを使うのか?あなたの正確な意図を知らないと、最適な答えを出すのは難しいかもしれません。
クラスのインスタンスを特定の方法で表示させたい場合は、ほとんどの場合、手動で行った方が良いでしょう。これにより、必要なものは正確に含まれ、必要でないものは含まれず、順序も予測可能になります。
クラスのコンテンツを表示する方法を探しているのであれば、気になる属性を手動でフォーマットし、これをクラスの __str__
または __repr__
メソッドとして提供します。
あるオブジェクトがどのように動作するかを理解するために、そのオブジェクトにどのようなメソッドなどが存在するかを知りたい場合は、help
を使用します。help(a)`は、オブジェクトのクラスについて、docstringsに基づいてフォーマットされた出力を表示します。
dirはオブジェクトのすべての属性をプログラムで取得するために存在します。(
dict` へのアクセスは、同じようなものとして分類されますが、私自身は使いません)。しかし、これにはあなたが望むものが含まれていないかもしれませんし、望まないものが含まれているかもしれません。これは信頼性が低く、人は自分が欲しいと思っていることの方が多いのです。
少し直観的な話になりますが、現時点ではPython 3のサポートはほとんどありません。もしあなたが本物のソフトウェアを書くことに興味があるならば、numpy、lxml、Twisted、PILなどのサードパーティ製のものが必要になるでしょうし、Python 3をまだサポートしておらず、すぐにサポートする予定もありません。2.6 と 3.x ブランチの違いは小さいですが、ライブラリサポートの違いは非常に大きいです。