1

私はPythonの教科書でそれらの用語について読みました。それらの文字通りの意味を調べても意味がわかりません。誰かが私にそれを説明したり、私にいくつかの参照を提供したりできますか?

-用語のコンテキストを更新します

i) (­42).__abs__() # Need parentheses to avoid confusing ... # ... method call '.' with decimal point
j) (42).__mul__(2) # Even multiplication is a method call
k) name.swapcase()
l) name.title().swapcase() # name.title() is an object so ... m) name.upper().find('TOM') # ... we can “cascade” method calls.

このコースでこれまでに行った操作のほとんどは、実際には、操作しているオブジェクト(データ項目)のメソッドを暗黙的に呼び出すことによって提供されていることに気付くと思います。実際、すべての演算子('+'、'*'など)はメソッド呼び出しの単なる構文上のショートカットですが、組み込み関数の一部のみがメソッドに対応しています。

4

5 に答える 5

4

暗黙的なメソッド呼び出しは、特定のメソッドがそれ自体で呼び出されることを意味し(JavaのJVMなど)、明示的なメソッド呼び出しは、メソッドがユーザーによって呼び出されることを意味します。

于 2012-08-07T03:04:40.013 に答える
4

さて、私はあなたの本の中でこれらの用語の文脈を知りませんが、私はimplicit-vs-explicit-programmingを見つけました。それは最初に話しexplicit programmingimplicit programming次にimplicit method callそしてexplicit member call。それが役立つかどうかわからない。たぶんあなたは私たちにもっと詳細を与えることができます。

編集

それが意味することは、使用するとき、3+2または3*2明示的にメソッドを呼び出さないように見えるが、実際には、実装方法が(3).__add__(2)またはを呼び出すために呼び出したということだと思います(3).__mul__(2)。したがって、これらのメソッドを暗黙的に呼び出しています。

于 2012-08-07T03:14:39.470 に答える
0

暗黙的な呼び出しは、ユーザーの干渉なしにコンパイラーによって自動的に行われる関数呼び出しですが、明示的な呼び出しは、特定のタイプのコードを使用してユーザーによって行われます。

于 2015-04-16T05:32:33.630 に答える
0

Javaでは、暗黙的および明示的な関数呼び出しが可能です。

例:

public class Junk
{
  private int a = 1;
  public String toString () { return (a); }
}

void main (String [] args)
{
  Junk j = new Junk (); // implicit call to Junk's default constructor 
  System.out.println (j); // implicit call to j.toString();
  System.out.println (j.toString()); // explicit call to j.toString();
}
于 2019-07-26T11:01:31.113 に答える
0

私の理解によると、Pythonは、特定の演算子('+'、'-'、'*'、'。'、'//'、()、delなど)または組み込み関数の結果として、特定のメソッドを暗黙的に呼び出します。 (repr、str、divmod、powなど)式で使用されています。このように呼び出されるメソッドは、ほとんどが__接頭辞と接尾辞で名前が付けられているため、「マジックメソッド」または「ダンダー」という用語です。

詳細については、 https://docs.python.org/3.8/reference/datamodel.htmlを参照してください。

これらのメソッドは、明示的に呼び出すこともできます。たとえば、あなたの質問のように:

abs(42)

次のように呼び出すことができます:

(42).__abs__()

また

42.0.__abs__()
于 2021-02-20T03:10:32.213 に答える