在今天的講座中,我們開始使用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'方法。這裏'node'有兩個,'socialNetwork'也沒有。 – GLR
這不是一個*子類*,它是一個*嵌套類*,在這裏沒有什麼意義。 –