我在過去幾天開始學習python,並在探索麪向對象的編程時遇到了問題。 我在運行pydev插件時使用Eclipse,在python 3.3 beta上運行,並使用Windows 64位系統。如何在Python中正確地擴展其他類? (python v3.3)
我可以初始化一個類,並使用其中的任何方法,只要我沒有試圖擴展超類(每個類我在不同的源文件中編碼) 例如,下面的代碼編譯並運行良好。
class pythonSuper:
string1 = "hello"
def printS():
print pythonSuper.string1
,並訪問並運行它的代碼...
from stackoverflow.questions import pythonSuper
class pythonSub:
pysuper = pythonSuper.pythonSuper()
pysuper.printS()
就像我說的,是作品。下面的代碼不
class pythonSuper: """Same superclass as above. unmodified, except for the spacing"""
string1 = "hello"
def printS(self):
print(pythonSuper.string1)
嗯,這並不完全正確。至少就我所知,超類是絕對好的。它是weirds出
from stackoverflow.questions import pythonSuper
class pythonSub(pythonSuper):
pass
pythonObject = pythonSub()
pythonSub.pythonSuper.printS()
當子類運行Eclipse打印出此錯誤
Traceback (most recent call last):
File "C:\Users\Anish\workspace\Python 3.3\stackoverflow\questions\pythonSub.py",
line 7, in <module>
class pythonSub(pythonSuper):
TypeError: module.__init__() takes at most 2 arguments (3 given)
我不知道發生了什麼事情
的子類。我一直在從新波士頓的教程學習python,但那些已經過時(我認爲他的教程代碼使用python版本2.7)。他還使用IDLE編碼,這意味着他的類都包含在一個文件中。但是,我的所有文件都以自己的文件編碼。這意味着我不知道我得到的代碼錯誤是由於過時的語法還是我對此語言缺乏瞭解。但我離題了。如果任何人可以回覆一個解決方案和/或解釋爲什麼代碼出錯,我可以做些什麼來解決它。解釋將是優選的。我寧願知道我做錯了什麼,所以我可以在類似的情況下避免和解決問題,而不僅僅是複製和粘貼一些代碼並查看它的工作原理。 謝謝,我期待你的回答
謝謝,但現在它發佈了這個錯誤Traceback(最近調用最後): 文件「C:\ Users \ Anish \ workspace \ Python 3.3 \ stackoverflow \ questions \ pythonSub。pythonSub'沒有屬性'pythonSuper',我不想糾纏任何人,但是有什麼理由? – pipsqueaker117 2012-07-21 21:09:22
爲什麼你會期望它對?pythonSub是擴展pythonSuper,不包含它。'printS'是繼承的,你可以通過你的pythonSub實例直接訪問它。 – 2012-07-21 21:16:55
@DanielRoseman對不起,那個飛過了我的腦袋,你能解釋一下嗎? ,嗯,noob語言?(或者你可以鏈接到我可以學習所有這些東西的頁面) – pipsqueaker117 2012-07-21 23:15:09