-1

私は自己学習型のPythonを始めましたが、C#とJavaは知っていますが、Python言語は今のところ少し奇妙です。小さな電話帳プログラムを作りたいのですが。

電話帳というリストを作成したいと思います。リストの各メンバーはenteryというクラスのメンバーであり、各enteryにはいくつかの文字列と電話番号の文字列のリストがあります。例えば:

class entery:
    def addEntery (str1,str2,list):
        tmp = entery()
        tmp.str1 = str1
        tmp.str2 = str2
        tmp.list = list

def main():
    phonebook = []
    phonebook.append(addEntery('ian1','ian2',list)

C#からPythonまでのギャップを埋め、簡単なタスク用のクラスを作成するためのサポートが必要です。

4

2 に答える 2

3

適切なコンストラクターを定義していません。そのはず:

class Entery(object):
  def __init__(self, str1, str2, str3):
    self.str1 = str1
    self.str2 = str2
    self.str3 = str3

Pythonには「プライベート」データがないため、「外部」からこれらの各フィールドに直接アクセスできます。

>>> test = Entery("a", "b", "c")
>>> print test.str1
a

次に、コンストラクターを呼び出してインスタンスを作成することにより、リストを作成できます。

phonebook.append(Entery("one", "two", "three"))
phonebook.append(Entery("four", "five", "six"))

これは非常に重要です。これはphonebookインスタンスのリスト、つまり「クラスのリスト」ではなくオブジェクトのリストです。もちろん、クラスをリストに入れることも可能ですが、それはあなたが求めているものではありません。

おそらく、いくつかの基本的なPythonクラスのチュートリアルを読むことにもっと集中する必要があります。また、クラスの命名に関してあなたが探している単語はおそらくEntryです。

于 2012-11-13T15:32:30.503 に答える
0

エラーの原因となるappendメソッドに閉じ括弧がありません。また、Pythonのクラスに属するすべての関数は、関数シグネチャでselfへの参照を持っている必要があります。また、クラスを単純なコンストラクターに縮小することもできます。

class Entery:
    def __init__(self, str1, str2, str3):
        self.str1 = str1
        self.str2 = str2
        self.str3 = str3

phonebook = []
phonebook.append(Entery('ian1','ian2',list))
print phonebook[0].str1
于 2012-11-13T15:53:21.307 に答える