web-dev-qa-db-ja.com

1つの必須の位置引数がありません

プログラミングに関して言えば、私は環境に優しいだけでなく、プロセスを作成していることから始めましょう。しかし、私の心は、なぜ、何が起こっているのかを完全に理解する必要があります。

とにかくタイトルが示唆するように手元の問題は、最小限に保つソースコードを貼り付けます。

(私はPythonバージョン3.4.1を使用)


class classname:
    def  createname(self, name):
        self.name = name;
    def displayname(self):
        return self.name;
    def saying(self):
        print("Hello %s" % self.name);

first = classname;
second = classname;

first.createname("Bobby");

ここにエラーコードを貼り付けます。


Traceback (most recent call last):
File "<pyshell#16>", line 1, in <module>
first.createname("Bobby")
TypeError: createname() missing 1 required positional argument: 'name'

私はエラーをチェックし、それが言うことを注意深く読み、投稿の前に検索を行う必要があることを理解していますが、それが終わって、投稿するためにここに来る問題を解決できません...

ここから、私の心の中で起こっていることについて興味があるかどうかを読むことができます:

エラーには、名前にもう1つの引数が必要であることが示されているため、そこで間違っているはずですが、私はすでにこのようなことを試みました:

first.createname("bobby", "timmy");

名前にもっと引数がありますか?私が正しく理解している場合、引数はこれにあります->()<-

また、selfが単独で含まれているべきではないため、def createname(self、name)になるという事実も除外しますか?だから私は何が起こっているのか本当に理解していません。

これに既に答えられている場合は、事前に感謝し、申し訳ありません。その場合、私はそれを見落としていたに違いありません。


解決済み:

 first = classname;
 second = classname;

する必要があります:

 first = classname();
 second = classname();

欠落している括弧は、もちろん、他の何かに対して最初と2番目のEQUALを作成し、「実際のcl

11
XallZall

これは非常に簡単な答えです、あなたは応答を得られなかったことに驚いた! :(

実際にオブジェクトを作成したことはまだありません

たとえば、次のように記述します。

first = classname()

ただの代わりに

first = classname

現時点では、どのように書いたか、firstclassを指しています。たとえば、firstとは何かを尋ねると、次のようになります:

<class '__main__.classname'>

ただし、インスタンス化した後(単に()最後に)、firstが次のようになっていることがわかります。

<__main__.classname object at 0x101cfa3c8>

ここでの重要な違いは、your呼び出しがclass、一方私はobjectを作成しました。

クラスは、人類があなたに対して、または犬がラッシーに対してであるように、オブジェクトに対するものです。

「犬」を作成しましたが、「ラッシー」を作成したかったのです。


注:通常、オブジェクトを初期化します。そのために、__init__クラスのメソッド。

6
Mike Williamson