-4

重複の可能性:
Python でメソッドのオーバーロードを使用するにはどうすればよいですか?

私は Python プログラミングは初めてで、同じ名前の複数のメソッドを書くのが好きですが、最近呼び出されたメソッドだけが印刷されるのはなぜですか?

コードは以下のとおりです。

class A:
    def mymethod(self):
        print 'first method'
    def mymethod(self):
        print 'second method'
ob = A()
ob.mymethod()

出力はsecond method.

この Python メソッド呼び出しの背後にあるメカニズムは何ですか? 同じ名前の 2 つのメソッドを同時に呼び出すことはできますか?

4

1 に答える 1

2

ここで議論:

Python 関数のオーバーロード

Python では、関数は名前で検索されます。引数の型は名前の一部ではなく、どこにも宣言されていません。この関数は、任意の型の引数で呼び出すことができます。

「ダックタイピング」を使用して関数を作成すると、通常、1 つの関数に必要なすべての異なるジョブを実行させることができます。デフォルト値を持つ引数もよく使用され、異なる数の引数で関数を呼び出すことができます。

簡単な例を次に示します。

class A(object):
    def __init__(self, value=0.0):
        self.value = float(value)

a = A()  # a.value == 0.0
b = A(2)  # b.value == 2.0
c = A('3')  # c.value = 3.0
d = A(None)  # raises TypeError because None does not convert to float

この例では、float 値が必要です。ただし、引数の型はテストしません。フロートするように強制するだけで、それが機能する場合は満足です。型が間違っている場合、Python は例外を発生させます。

于 2012-04-18T05:31:09.383 に答える