Python: __init __ () prend exactement 2 arguments (3 donnés)
Je suis en train d'écrire un programme pour trouver des adaptateurs, et ont fait une classe appelée "Adaptateur". Quand je passe dans deux arguments RALENTI me donne un message d'erreur indiquant que je suis passé dans trois! Voici le code et la trace de la pile:
#This is the adapter class for the adapter finder script
class Adapter:
side1 = (None,None)
side2 = (None,None)
'''The class that holds both sides of the adapter'''
def __init__((pType1,pMF1),(pType2,pMF2)):
'''Initiate the adapter.
Keyword Arguments:
pType1 -- The passed type of one side of the adapter. ex: BNC, RCA
pMF1 -- The passed gender of pType1. ex: m, f
pType2 -- The passed type of one side of the adapter. ex: BNC, RCA
pMF2 -- The passed gender of pType2. ex: m, f
'''
print 'assigining now'
side1 = (pType1,pMF1)
print side1
side2 = (pType2,pMF2)
print side2
sideX = ('rca','m')
sideY = ('bnc','f')
x = Adapter(sideX,sideY)
print x.side1
print x.side2
D'erreur:
Traceback (most recent call last):
File "C:\Users\Cody\Documents\Code\Python\Adapter Finder\adapter.py", line 28, in <module>
x = Adapter(sideX,sideY)
TypeError: __init__() takes exactly 2 arguments (3 given)
Je ne comprends pas quel est le problème parce que je ne suis saisi de deux arguments!
Edit: je suis nouveau sur le langage python, même si je sais que Java.
Je suis l'aide de cette page comme un tutoriel: http://docs.python.org/tutorial/classes.html
source d'informationauteur codysehl
Vous devez vous connecter pour publier un commentaire.
Oui, l'OP a raté le
self
mais je ne sais même pas ce que les tuples comme arguments de moyenne et je suis volontairement pas la peine de le comprendre, c'est juste une mauvaise construction.Codysehi, veuillez contraste de votre code avec:
et de voir qu'il est à la fois plus lisible, et fait ce je pense que vous avez l'intention.
Les appels de méthode d'obtenir automatiquement un paramètre 'self' comme premier argument, alors assurez
__init__
() ressemble à:C'est généralement implicite dans d'autres langues, en Python, il doit être explicite. Notez également qu'il est vraiment juste une manière d'informer la méthode de l'instance, il appartient, vous n'avez pas l'appeler "moi".
Votre
__init__
devrait ressembler à ceci:Il semble que ce soit la façon Python, dit bonjour à tout le monde l'apprentissage de la langue. Type de Python première bouchée.
Vous devez spécifier auto dans les méthodes d'instance en tant que premier argument. De sorte qu'il devrait être.