2017-09-16 2 views
0

Ceci est mon codeerreur dans le code Python

class New_Class: 
    def func(self,name): 
     self.name = name 
    def prnt(self): 
     print(self.name) 

J'ai créé un objet comme celui-ci

obj = New_Class 

Assigné Chaîne:

obj.func("Aniket") 

Appelé Fonction:

obj.prnt() 

Erreur:

TypeError         Traceback (most recent call last) 
<ipython-input-9-3e8021509a88> in <module>() 
----> 1 obj.func("Aniket") 

TypeError: func() missing 1 required positional argument: 'name' 
+5

Vous devez _call_ le constructeur de la classe: 'obj = New_Class()'. Faire 'obj = New_Class' assigne' obj' à l'objet _class_ 'New_Class'. Et quand une méthode est appelée directement sur une classe, Python ne passe pas implicitement une instance d'objet. –

Répondre

1

Init une instance en tant que classe, vous devez appeler la classe (avec des crochets «() »), au lieu d'y faire référence (sans parenthèses).

donc le bon code serait

class New_Class: 
    def func(self,name): 
     self.name = name 
    def prnt(self): 
     print(self.name) 

obj = New_Class() ##### Brackets make a difference 
obj.func("Aniket") 
obj.prnt() 
0

Vous assignez votre variable à la référence de classe au lieu d'instancier un nouvel objet de la classe.

Vous pouvez ajouter entre parenthèses pour faire ce travail pour vous, comme:

obj = New_Class() 
obj.func("Aniket") 
obj.prnt() 

Je pense que votre fonction fonctionnera très bien après ce changement.

:)