Während einer Vorlesung begannen wir heute mit Unterklassen in Python zu arbeiten. Als Beispiel wurden wir ein sehr grundlegendes soziales Netzwerk gegebenen Code ähneln, der wie folgt lautet:Python Subclass Attribut Fehler
class socialNetwork:
class node:
def __init__(self, name, friendList):
self.name=name
self.friendList=friendList
def __init__(self):
self.nodeList=[]
def addPerson(self, name, friendList):
person=self.node(name,friendList)
self.nodeList.append(person)
s = socialNetwork()
s.addPerson("John",["Alice","Bob"])
s.addPerson("Alice",["John","Bob","Jeff"])
s.addPerson("Bob",["John","Alice","Jeff","Ken"])
s.addPerson("Jeff",["Alice","Bob","Barbra"])
s.addPerson("Ken",["Bob","Barbra"])
s.addPerson("Barbra",["Jeff","Ken"])
for person in s.nodeList:
print("name: ",person.name, "\n\t friends: ",person.friendList)
Jedes Mal, wenn ich dies zu laufen versuchen, ich die folgende Meldung angezeigt:
Traceback (most recent call last):
** IDLE Internal Exception:
File "C:\Users\Mike\AppData\Local\Programs\Python\Python36-
32\lib\idlelib\run.py", line 460, in runcode
exec(code, self.locals)
File "C:/Users/Mike/AppData/Local/Programs/Python/Python36-32/run.py",
line 15, in <module>
s.addPerson("John",["Alice","Bob"])
AttributeError: 'socialNetwork' object has no attribute 'addPerson'
Einfach ausgedrückt Ich habe keine Ahnung, warum ich auf diesen Fehler stoße, vor allem nachdem der Professor den gleichen Code ausgeführt hat. Fehle ich hier etwas, und wenn ja, könnte jemand darauf hinweisen?
Sind Sie sicher, dass dieser Code korrekt ist? Jede Klasse sollte nur eine "__init" -Methode haben. Hier hat 'node' zwei und' socialNetwork' weder. – GLR
Das ist keine * Unterklasse *, das ist eine * Nested-Klasse *, was hier nicht wirklich sinnvoll ist ... –