2013-11-22 3 views
0
class Bil(object): 
    def __init__(self, tankVol, aktVol=0): 
     self.tankVolym = tankVol 
     self.aktuellVolym = aktVol 

    def tanka(self, liter=5): 
     self.aktuellVolym = self.aktuellVolym + liter 
     over = self.aktuellVolym - self.tankVolym 
     if over > 0 : 
      self.aktuellVolym = self.tankVolym 
     else: 
      over = 0 
     return over 

print(Bil.tanka(80)) 
print(Bil.aktuellVolym) 

왜 작동하지 않습니까?왜 AttributeError가 발생합니까? 작동하지 않습니다.

AttributeError: 
    "int" object as no attribute "aktuellVolym" 
+0

빌은 클래스입니다. 그 클래스의 인스턴스가 필요합니다 -> foobar = Bil (20). 그리고 foobar.aktuellVolym을 사용할 수 있습니다. – Xeun

답변

2

Bil은 클래스입니다. 난 당신이 인스턴스 클래스 대신 싶어요. 이 경우


bil_instance = Bil(80) # Create instance of Bil. 
print(bil_instance.tanaka()) 
print(bil_instance.aktuellVolym) 

, 당신은 얻고 AttributeError 이유는

Bil.tanka(80) 

tanka 함수에 self 인수로 80를 전달합니다. python2.x에서 tanka은 첫 번째 인수로 Bil 인스턴스가 필요하다는 다른 오류가 발생했을 것입니다.

관련 문제