0

重複の可能性:
Python のクラス メソッドの違い: バインド、非バインド、および静的

class A:
    def foo():
        print 'hello world'
    def foo1(self):
        self.foo()

a = A()
a.foo1()

そのクラス専用の関数を使用することを検討していました。そのための唯一の方法は、慣例に従うことだと思います。その関数名の前に「_」を付け、最初の引数を次のようにします。self

しかし、foo()まったく役に立たないのですか?

4

3 に答える 3

2

重要なすべての用途について、はい。メソッドのさまざまな属性を介して生の関数を取得できますが、クラスでそのようなものを使用してもほとんど意味がありません。

>>> A.foo.im_func()
hello world
于 2013-01-03T09:05:45.217 に答える
0

に電話してみてくださいA.foo()。を出力します'hello world'

これは Python 3 でのみ機能することに注意してください。Python 2 ではTypeError.

于 2013-01-03T09:04:39.677 に答える
0

はい、ほとんど役に立ちません。Python 2.x では、例外をスローせずに呼び出す唯一の方法は、クラスの内部から関数を抽出して呼び出すことです。Python 3.x (を変換したと仮定) では、直接print呼び出すことができました。A.foo()

foo()引数が本当に必要ない場合selfは、メソッドである必要はありません。クラスが定義されているのと同じモジュール内の関数にするだけです。

于 2013-01-03T09:06:39.420 に答える