2017-05-17 24 views
-1

ではありません、私はPythonプロジェクトを作成して、私が実行したときに、いくつかのメソッドとプロパティ(変数)を持つクラスを作る私のスクリプトPythonの解釈を教えてください:TypeError例外:「STR」オブジェクト呼び出し可能なPythonの3.6.1

トレースバック(最も最近の呼び出しの最後): [email protected]

ファイル "C:/.../ Python_Tutorials/Object_Orinted_Programming.py"、行272、 Child_Instance.name( "子" で) はTypeError: " str 'オブジェクトは呼び出し可能ではありません

コード:

class Mother_Class: 
    def __init__(self,parm1,parm2): 
     self.name = (parm1) 
     self.family = (parm2) 
     self.full_name = (self.name + " " + self.family) 
     self.email = (self.name+"."+self.family+"@gmail.com") 
    def full_name(self,parm1,parm2): 
     print ("Your Full Name is: "+parm1 + "" + parm2) 



class Child_Class(Mother_Class): 

    def name(self,name): 
     name = (name) 

    def family(self,family): 
     family = (family) 

    def Some_Methods(self): 
     print ("Some information is Here: ") 


Instance = Mother_Class("mother","class") 
print (Instance.full_name) 
print (Instance.email) 

print ("") 

Child_Instance = Child_Class("child","class") 
Child_Instance.name("overwriteclass") 
print (Child_Instance.full_name) 

何が問題ですか?

+4

いくつか。 1)関数と変数nameの両方に名前を付けないでください。 1つの定義はすべて同じ名前空間にあるため、もう一方の定義は上書きされます。 2) 'name =(name)'を設定することは絶対に何もしません。 –

+0

あなたの大きな助けに感謝します:) –

答えて

3

次のメソッドは、メソッドnameを関数に渡された値で書き換えます。

したがって、「メソッド」を呼び出すと、実際にメソッドを上書きした文字列を呼び出そうとしています。

nameをメソッド名とプロパティ名の両方として使用しようとしているため、修正にはある種の構造変更が必要になります。多分:

def set_name(self, name): 
    self.name = name 
関連する問題