基本的Python类

时间:2012-04-26 12:56:54

标签: python class init

我只是尝试构建一个基本类,以便我可以学习更多关于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 )

在添加注释变量和查看这样做的正确方法方面?

谢谢,

2 个答案:

答案 0 :(得分:4)

bmitotal中的notes__init__变量将在__init__完成时进行本地和垃圾收集,因此将其初始化为无用。您可能希望将它们初始化为self.notesself.bmitotal

Bodymassindex.count 就像一个静态变量,与所有实例共享的值。

答案 1 :(得分: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中的直接访问没有任何问题。正如其他人所指出的那样,你可能想要制作notesbmitotal个实例变量,我在这里做过。