2
class person():
    def __init__(self):
        self.height = 3.0
        self.weight = 240.0
        self.temp = 99.23

        self.statlist = [self.height, self.weight, self.temp]

    def grow(self):
        self.statlist[1] = self.statlist[1] + 26.0

これにアプローチする最良の方法は何ですか?

問題は、リストからこれらの 'stat' 属性にアクセスして変更しようとしているのですが、それらを呼び出す方法が本当にわかりません。これを行う必要があるのは、変更する統計をランダムに選択できるようにするためです。各統計がそのクラスのインスタンスになるように、統計クラスを作成する必要がありますか?

どんな助けでも素晴らしいでしょう。

4

2 に答える 2

1

getattr() と setattr() を使用します。

import random
class person():
    def __init__(self):
        self.height = 3.0
        self.weight = 240.0
        self.temp = 99.23

        self.statlist = ["height", "weight", "temp"]

    def grow(self):
        name = random.choice(self.statlist)
        setattr(self, name, getattr(self, name) + 26.0)

    def __str__(self):
        return "%f, %f, %f" % (self.height, self.weight, self.temp)

p = person()
print p
p.grow()
print p
p.grow()
print p

出力は次のとおりです。

3.000000, 240.000000, 99.230000
3.000000, 266.000000, 99.230000
3.000000, 266.000000, 125.230000
于 2012-05-08T06:00:51.100 に答える
0
import random

class person():
    def __init__(self):
        self.height = 3.0
        self.weight = 240.0
        self.temp = 99.23

        self.attrlist = ['height', 'weight', 'temp']

    def grow(self):
        rand_attr = random.choice(self.attrlist)
        attr_value = getattr(self, rand_attr)
        setattr(self, rand_attr, attr_value + 26.0)
于 2012-05-08T05:57:09.870 に答える