0

クラスでコンストラクターメソッドを使用するプログラムを作成しています。私の方法は次のようになります。

class Myclass:
    population = 0
    def __init__(self, var1, var2, var3):
        Myclass.population +=1
        self.var1 = var1
        self.var2 = var2
        self.var3 = var3
        popFile = open('pop.txt', 'wt')
        popFile.write('population = ' + str(int(Myclass.population)))
        print('blablabla')
        print('again blablabla')
        popFile.close()
        pliada = (var1, var2, var3)
        outFile = open('prog.txt', 'at')
        outFile.write(str(pliada) + '\n')
        outFile.close()

私の問題は、上記の

outFile.write(str(pliada) + '\n')

タプルとは別にオブジェクト名を保存したい!write() 関数内に他に何を追加すればよいですか?

たとえば、プログラムを実行すると、次のように入力します。

First = Myclass('firstvar','secondvar','thirdvar')

そして私が使うとき

print(First)

上記のタプルのみを出力します。prog.txt を開くと、ここでもタプルのみが表示されます。('firstvar','secondvar', thirdvar') を保存する代わりに、プログラムが First ('firstvar','secondvar', thirdvar') を保存するように、各オブジェクトの名前を参照するにはどうすればよいですか (作成中)。プログラムに入力した変数?

ありがとう

4

3 に答える 3

1

あなたが書いたコメントで:

このプログラムでの私の目的は、3 つの特徴を持つ人々を作成することです。例: Yann = PeopleClass('Tall', 'Thin', 33)

「Yann」という名前をその人のプロパティにしたい場合は、変数名として使用するのではなく、オブジェクトの属性として含める必要があります (おそらく、コンストラクターに引数として渡します)。変数名はデータであってはなりません!

すべてのオブジェクトが単純な名前の変数にバインドされているわけではありません。たとえば、人のリストがある場合は、people_list[0]や などの識別子を介してアクセスできますpeople_list[1]。しかし、それらは印刷するほど魅力的ではありません! 同様に、1 つのオブジェクトが異なる名前の変数に複数回バインドされる場合があります。上記のコメントのコードを実行した後に を実行した場合John = Yann、同じ PersonClass インスタンスに変数Yannおよびを介してアクセスできJohn、特定の瞬間にどちらが使用されているかをコードで把握するのが非常に困難になります。

したがって、ではなく:

Yann = Person("Tall", "Thin", 33)

行う:

my_person = Person("Yann", "Tall", "Thin", 33)

(もちろん、クラス定義を更新して、渡された名前を受け入れて保存します。)

于 2014-07-13T13:23:03.270 に答える