2016-11-22 9 views
0
class person: 
    def __init__(self, name, age): 
     self.name = name 
     self.age = age 
    def __str__ (self, name, age): 
     return ('name: {}\nage: '.format(self.name,self.age)) 

class teacher(person): 
    def __init__(self,name,age,sub): 
     person.__init__(self,name,age) 
     self.sub = sub 
    def __str__(self): 
     return (person.__str__(self)+'sub: {}'.format(self.sub)) 

class student(person): 
    def __init__(self,name,age,loan): 
     person.__init__(self,name,age) 
     self.loan = loan 
    def __str__(self): 
     return (person.__str__(self)+'loan: {}'.format(self.loan)) 
+0

SO、実際のテキストにあなたの質問を含むようにその通常の素敵な、それは質問を読みやすくするためにようこそ。 – miltonb

答えて

3

__str__()print()によって呼び出され、それが一つのパラメータのみ、selfをとるれます。

私はあなたがクラスの使用について何か誤解していると思います。 __str__(self)は、すでに保存されている人物の表現を印刷することになっています。印刷するための新しいパラメータは使用しません。例えば

class person: 
    def __init__(self, name, age): 
     self.name = name 
     self.age = age 
    def __str__(self): # <-- changed this line 
     return ('name: {}\nage: {}'.format(self.name,self.age)) # <-- added another {} here, too 

それは単にメソッド定義のタイプミスですか?

Try online at http://repl.it

+0

'print'(実際に' str(obj) 'を呼び出すパラメータは1つのパラメータだけです); *法的に*' person().__ str __(1,2) 'を実行できます。それは非常に多くの異なるレベルで間違っている! –

関連する問題