2017-09-17 16 views
0
class Person: 

    def _init_(self): 
     self.A=1 

class Employee(Person): 

    def _init_(self): 
     print(A) 

object1=Person() 
object2=Employee() 
+0

'' __init__'と同じではありません_init_'。あなたの "コンストラクタ"は決して呼び出されません。タイプミスのために閉じる投票。 –

+0

@tobias_kうーん、そこにはもう少し多くのものがあります。 –

+0

@DanielRosemanうん、すでに気づいて、私の票を引っ込めました。 –

答えて

2

あり、そのコードに複数の問題は、スペルが間違ってコンストラクタ以外にも...

  1. あなた_init_方法は__init__する必要があり、実際にそうでなければだが継承を持つことができますコンストラクタではなく、ただちに_init_というメソッドが呼び出されることはありません。
  2. スーパークラスのコンストラクタを呼び出す必要があります。Aは設定されません。 super().__init__()またはPerson.__init__(self)
  3. インスタンスのAフィールドを読み取るには、self.Aを使用する必要があります。それ以外の場合は、これは動作するはずA

というローカル変数を探します:

class Person: 

    def __init__(self):  # misspelled 
     self.A = 1 

class Employee(Person): 

    def __init__(self):  # misspelled 
     super().__init__() # call super constructor 
     print(self.A)  # use self.A 
+0

助けてくれてありがとう –

関連する問題