私は自分でpythonを学習しています。今私はアドレス帳をコードしようとします。 私はあなたがそれを使うべきだと読んだのですが、なぜなら、このクラスにあるすべての関数(insertaddress、deletaddres、...など)を定義せずに、通常の関数のように使うことができるからです。または私は間違っていますか?私のクラスをインポートして使用するとエラーが発生します
が、私は1を作成したクラスといくつかの練習を得るために:
class Addressbook():
def __init__(self,last,first,street,num,plz,place):
self.last=last
self.first=first
self.street=street
self.num=num
self.plz=plz
self.place=place
def insertadd(self):
text =self.last+" "+self.first+" "+self.street+"
"+self.num+" "+self.plz+" "+self.place+"\n"
with open("addressbook.txt", "a") as file:
file.write(text)
私のメインのファイルで:
from klassen import Addressbook
k.last= input()
k.first=input()
(...)
k.place = input()
k.insertadd()
しかし、私はfrom klassen import Addressbook as k
経由で私のクラスをインポートし、私にクラス属性をリンク入力:k.first=input("text")
とk.insertadd()
機能を実行しようとするとエラーメッセージが表示されます。
NameError: name 'self' is not defined
私は私の機能私は「場所」が不足しているPARAMTERであることを私に告げるエラーを取得し、入力として持っておきPARAMTERを与えます。
私を助けてもらえますか?
あなたがすべき
ウェルカムから
。ヘルプドキュメントの投稿ガイドラインを読み、それに従ってください。 [最小、完全で検証可能な例](http://stackoverflow.com/help/mcve)がここに適用されます。 MCVEコードを投稿して問題を正確に記述するまでは、効果的にお手伝いすることはできません。 投稿したコードをテキストファイルに貼り付け、説明した問題を再現できるはずです。 – Prune
あなたはクラスの仕組みについていくつかの誤解があるようです。クラスオブジェクトを直接使用してデータを保持しようとしているようです。それをしないでください。クラスのインスタンスを1つ以上作成する必要があります。そして、当時はAddressbookクラスのインポートを忘れていました。最初に単一のスクリプトファイルでこれを動作させてください。一度すべてがうまくいくと、それを複数のファイルに分割したいかもしれませんが、おそらくそれを行う必要はありません。PythonはJavaではありません。 –
私の友人コードはC++であり、クラスと関数用に余分なファイルを作成することでコードをより構造化できると教えてくれました。私のメインは読むほうがよいでしょう。 小規模なプロジェクトや一般的に複数のファイルを意味しませんか? – Omikron