Je suis nouveau à la POO. Mon idée était d'implémenter le cours suivant:
class name(object, name):
def __init__(self, name):
print name
L'idée était alors de créer deux instances de cette classe:
person1 = name("jean")
person2 = name("dean")
Je sais que ce n'est pas possible, mais comment puis-je passer un argument d'entrée dans une instance d'une classe?
>>> class name(object):
... def __init__(self, name):
... self.name = name
...
>>> person1 = name("jean")
>>> person2 = name("dean")
>>> person1.name
'jean'
>>> person2.name
'dean'
>>>
Est-ce ce que vous recherchez?
Le problème dans votre définition initiale de la classe est que vous avez écrit:
class name(object, name):
Cela signifie que la classe hérite de la classe de base appelée "objet" et de la classe de base appelée "nom". Cependant, il n'y a pas de classe de base appelée "nom", donc cela échoue. Au lieu de cela, tout ce que vous avez à faire est d’avoir la variable dans la méthode spéciale init , ce qui signifie que la classe la prendra comme variable.
class name(object):
def __init__(self, name):
print name
Si vous souhaitez utiliser la variable dans d'autres méthodes que vous définissez dans la classe, vous pouvez affecter name à self.name et l'utiliser dans n'importe quelle autre méthode de la classe sans avoir à la transmettre à la méthode.
Par exemple:
class name(object):
def __init__(self, name):
self.name = name
def PrintName(self):
print self.name
a = name('bob')
a.PrintName()
bob
Vous devez juste le faire dans la syntaxe correcte. Laissez-moi vous donner un exemple minimal que je viens de faire avec Python Interactive Shell:
>>> class MyNameClass():
... def __init__(self, myname):
... print myname
...
>>> p1 = MyNameClass('John')
John
Supprimez le paramètre name
de la déclaration de classe. La méthode init est utilisée pour passer des arguments à une classe lors de la création.
class Person(object):
def __init__(self, name):
self.name = name
me = Person("TheLazyScripter")
print me.name