0

私はクラスを持っています:

class something(object):
    def __init__(self, name=None, someobjects=[]):
        self.name = name
        self.someobjects = someobjects

そして、それらのオブジェクトの数をプロパティまたはメソッドとして取得できるようにしたいと考えています。例えば

bob = something()
print bob.numberofojects
   5

また

bob.numberofobjects()
       5

プロパティをクラス定義に追加しようとしました:

self.numberofobjects = len(someobjects)

またはクラス定義のメソッドとして:

 def total(self):
     print len(self.someobjects)

しかし、私は成功していません。両方の試行で 0 が返されますが (数値は 0 ではありません)、すべてのオブジェクト (このクラスの各アイテム) の長さは大きな数値です (同じ数値ですが、これは別の問題です)。

for person in listofpeoplewhoarethisclass:
        print person.name, person.numberofobjects, len(person.someobjects)

戻り値:

bob 0 716

すべての人のために....

4

1 に答える 1

3

関数returnの代わりに使用printします。total()

class something(object):
    def __init__(self, name=None, someobjects=[]):
        self.name = name
        self.someobjects = someobjects

    def total(self):
        return len(self.someobjects)

listofpeoplewhoarethisclass = [something("john", [1,2,3])]

for person in listofpeoplewhoarethisclass:
    print person.name, person.total(), len(person.someobjects)

戻り値:john 3 3

ヒント: クラスに「something」という名前を付けただけなのか、リストに「listofpeoplewhoarethisclass」という名前を付けただけなのかはわかりませんが、クラス、変数、リストに便利で直感的な名前を付けてください (たとえば、関数に「total」という名前を付けるのではなく)。 「長さ」または「サイズ」。合計は合計のように聞こえるため)。

于 2013-05-23T22:03:44.157 に答える