[解決済み] Pythonで明示的な'self'を避けるには?
質問
私はPythonを学ぶために、以下のものを参考にしています。 pygameチュートリアル .
というキーワードが多用されていることがわかりました。
自己
そして、主にJavaのバックグラウンドを持っている私は、このような場合
自己
. 例えば
self.rect.centerx
私なら
rect.centerx
, なぜなら、私にとっては。
直方体
はすでにクラスのメンバ変数です。
この状況に対して私が思いつくJavaの並列処理は、メンバー変数へのすべての参照の前に これ .
すべてのメンバ変数に接頭辞を付けるのは難しいですか? 自己 それとも、そのようなことをしなくても済むような宣言の仕方があるのでしょうか?
私が提案していることが、仮に ピトニック でも、それが可能かどうか、知りたいですね。
関連するSOの質問も見てみましたが、私が求めているものには全く答えられません。
解決するには?
Pythonではselfを指定する必要があります。 その結果、クラスの完全な定義が表示されていなくても、何がメンバーで何がメンバーでないかで混乱することはないのです。 このことは、例えば、非メンバーをシャドウするようなメンバーを追加して、それによってコードが壊れるようなことがない、というような有用な特性につながっています。
極端な例ですが、どのようなベースクラスがあるか全く知らずにクラスを書くことができ、メンバーにアクセスしているかどうかが常に分かります。
class A(some_function()):
def f(self):
self.member = 42
self.method()
それが、この コンプリート のコードです! (some_functionはベースとして使用される型を返します)。
もうひとつは、クラスのメソッドが動的に構成されるものです。
class B(object):
pass
print B()
# <__main__.B object at 0xb7e4082c>
def B_init(self):
self.answer = 42
def B_str(self):
return "<The answer is %s.>" % self.answer
# notice these functions require no knowledge of the actual class
# how hard are they to read and realize that "members" are used?
B.__init__ = B_init
B.__str__ = B_str
print B()
# <The answer is 42.>
これらの例はいずれも極端なもので、日常的に目にすることはありませんし、このようなコードを頻繁に書けというわけではありません。
関連
-
[解決済み】RuntimeWarning: invalid value encountered in double_scalars で numpy の除算ができない。
-
[解決済み】ilocが「IndexError: single positional indexer is out-of-bounds」を出す。
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] Pythonにはクラス内に「プライベート」変数がある?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python カメの描画コマンドとその例
-
PythonはWordの読み書きの変更操作を実装している
-
Pythonによるjieba分割ライブラリ
-
pythonサイクルタスクスケジューリングツール スケジュール詳解
-
Python百行で韓服サークルの画像クロールを実現する
-
Pythonの@decoratorsについてまとめてみました。
-
[解決済み】Pythonスクリプトで「Expected 2D array, got 1D array instead: 」というエラーが発生?
-
[解決済み】socket.error: [Errno 48] アドレスはすでに使用中です。
-
[解決済み】Pythonのメソッドで明示的に "self "引数が必要な理由とは?
-
[解決済み】pythonでオブジェクトの属性を繰り返し処理する【重複あり