2016-06-15 3 views
-2

Ich bin neu in OOP. Meine Idee war, die folgende Klasse zu implementieren:Python-Klasse Eingabeargument

class name(object, name): 
    def __init__(self, name): 
     print name 

Dann ist die Idee, zwei Instanzen dieser Klasse zu erstellen war:

person1 = name("jean") 
person2 = name("dean") 

Ich weiß, das ist nicht möglich, aber wie kann ich passieren einen Eingang -argument in eine Instanz einer Klasse?

+0

Warum denken Sie, es nicht möglich ist? Beginnen Sie hier: https://docs.python.org/3/tutorial/classes.html#a-first-look-at-classes –

+0

http://sopython.com/wiki/What_tutorial_should_I_read%3F - einleitendes Python-Tutorial wird diese Art von grundlegenden OOP abdecken. – jonrsharpe

Antwort

5
>>> class name(object): 
...  def __init__(self, name): 
...   self.name = name 
... 
>>> person1 = name("jean") 
>>> person2 = name("dean") 
>>> person1.name 
'jean' 
>>> person2.name 
'dean' 
>>> 

Ist das wonach Sie suchen?

2

Entfernen Sie den Parameter name aus der Klassendeklaration. Die init-Methode wird verwendet, um Argumente bei der Erstellung an eine Klasse zu übergeben.

class Person(object): 
    def __init__(self, name): 
    self.name = name 

me = Person("TheLazyScripter") 
print me.name 
3

Sie müssen es nur in korrekter Syntax tun. Lassen Sie mich Ihnen ein minimales Beispiel gebe ich habe gerade mit Python interaktiv Shell:

>>> class MyNameClass(): 
... def __init__(self, myname): 
...  print myname 
... 
>>> p1 = MyNameClass('John') 
John 
1

Python Classes

class name: 
    def __init__(self, name): 
     self.name = name 
     print("name: "+name) 

Irgendwo anders:

john = name("john")

Ausgang:
name: john

2

Das Problem in Ihrer ursprünglichen Definition der Klasse ist, dass Sie geschrieben haben:

class name(object, name): 

Das bedeutet, dass die Klasse die Basisklasse namens „Objekt“, und die Basisklasse namens „name“ erbt. Es gibt jedoch keine Basisklasse namens "name", daher schlägt sie fehl. Stattdessen müssen Sie nur die Variable in der speziellen init Methode haben, was bedeutet, dass die Klasse es als Variable nimmt.

class name(object): 
    def __init__(self, name): 
    print name 

Wenn Sie die Variable in anderen Methoden verwenden wollen, die Sie innerhalb der Klasse definiert hat, können Sie Namen self.name zuweisen, und dass in der Klasse in einer anderen Methode verwenden, ohne dass es zu dem zu übergeben Methode.

Zum Beispiel:

class name(object): 
    def __init__(self, name): 
    self.name = name 
    def PrintName(self): 
    print self.name 

a = name('bob') 
a.PrintName() 
bob 
Verwandte Themen