講義の今日、私たちはPython内のサブクラスで作業を始めました。例として、私たちは次のようになり、非常に基本的なソーシャルネットワークに似たコードを与えられた:私はこれを実行しようとするたびに、Pythonサブクラス属性エラー
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)
をただしに、私は次のメッセージが表示されます。
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'
簡単に言えばなぜ私はこのエラーに遭遇しているのか分かりません。特に、教授が同じコードをうまく実行した後では、私は考えていません。私はここに何かを逃していますか?もしそうなら誰かがそれを指摘できますか?
このコードは間違いありませんか?各クラスは '__init'メソッドを1つだけ持つ必要があります。ここでは 'node'には2つあり、' socialNetwork'にはありません。 – GLR
これは*サブクラス*ではない*ネストされたクラス*であり、実際にここでは意味をなさない... –