我在过去几天开始学习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