タグ

ブックマーク / yoshi-python.blogspot.com (2)

  • 逆引き Python: privateやprotectedは

    Pythonにアクセス修飾子はない PEP 8 -- Style Guide for Python Codeに 非公開なメソッドとインスタンス変数にのみ、先頭にアンダースコアを1つ使って命名する。 サブクラスとの名前の衝突を避けるには、先頭にアンダースコアを2つ付けることで、Python の名前修飾ルールが行われる。 と書かれている 変数名などの先頭にアンダースコアを2つ付けると privateのようになりますが消えたわけでない class ABC: def __init__(self): self._x = 1 self.__y = 2 abc = ABC() print "_x =", abc._x print "__y =", abc._ABC__y print dir(abc) 実行すると _x = 1 __y = 2 ['_ABC__y', '__doc__', '__init_

  • オブジェクトから属性を取得する

    属性とはドットで参照できるオブジェクトのこよ 例えば "abc".split() なら split が属性になる # -*- coding: utf-8 -*- import inspect attr = getattr(inspect, "isclass") # inspect.isclass(inspect) と同じ b = attr(inspect) # 属性を持っているか調べる b = hasattr(inspect, "ismodule") # 属性のリストを取得する ls = dir(inspect) # メンバリストを取得する ls = inspect.getmembers(inspect) 詳細はドキュメントで 26.10 inspect -- 使用中オブジェクトの情報を取得する 26.10.1 型とメンバ getmembers(object[, predicate]) 2

    yuya_presto
    yuya_presto 2011/01/10
    str(文字列)で、属性にアクセスしたい場合は、getattr()を使う。ここでは触れられていないが、もちろんsetattr()もある。
  • 1