1

Pythonについてもう少し学べるように、基本的なクラスを構築しようとしています。これまでのところ、次のものがあります。

class Bodymassindex:
  count = 0
  def __init__(self,name,weight,height):
    self.name = name
    self.weight = 14 * weight
    self.height = 12 * height
    notes = "no notes have been assigned yet"
    bmitotal = 0
    Bodymassindex.count += 1

  def displayCount(self):
    print "Total number of objects is %d" % Bodymassindex.count

  def notesBmi(self,text):
    self.notes = text

  def calcBmi(self):
    return ( self.weight * 703 ) / ( self.height ** 2 )

ノート変数を追加して表示するという点で、正しい方法は何ですか?

ありがとう、

4

2 に答える 2

4

bmitotalとのnotes変数は、終了__init__時にローカルでガベージ コレクションされる__init__ため、そのように初期化しても意味がありません。おそらくそれらを次のように初期化する必要がself.notesありますself.bmitotal

Bodymassindex.countすべてのインスタンスで値を共有する静的変数のようなものです。

于 2012-04-26T13:04:30.330 に答える
2

属性にアクセスするだけです:

class BodyMassIndex(object): #Inheriting from object in 2.x ensures a new-style class.
  count = 0
  def __init__(self, name, weight, height):
    self.name = name
    self.weight = 14 * weight
    self.height = 12 * height
    self.notes = None
    self.bmitotal = 0
    BodyMassIndex.count += 1

  def display_count(self):
    print "Total number of objects is %d" % BodyMassIndex.count

  def calculate_bmi(self):
    return ( self.weight * 703 ) / ( self.height ** 2 )

test = BodyMassIndex("bob", 10, 10)
test.notes = "some notes"
print(test.notes)

Python での直接アクセスには何の問題もありません。他の人が指摘したように、ここで行ったように、変数を作成notesしてインスタンス化するつもりだった可能性があります。bmitotal

于 2012-04-26T13:05:37.307 に答える