终于学到这里了,这个其实就是比较让我头痛的一个地方。以前学别的语言就没有很彻底的理解,现在又回来了。看起来不是个好兆头。不过也还好,其实这些语言应当差不了太多的。慢慢学就好。
class schoolmermber: '''represents any school member''' def __init__(self,name,age): self.name = name self.age= age print '(intitialized schoolmember : %s ) ' % self.name def tell(self): '''tell my details''' print 'name:"%s" age:"%s"' % (self.name,self.age), class teacher(schoolmermber): '''represents a teacher.''' def __init__(self,name,age,salary): schoolmermber.__init__(self,name,age) self.salary = salary print '(initalized teacher: %s)' % self.name def tell(self): schoolmermber.tell(self) print 'salary:"%d"' % self.salary class student(schoolmermber): def __init__(self,name,age,marks): schoolmermber.__init__(self,name,age) self.marks= marks print '(initialized student : %s)' % self.name def tell(self): schoolmermber.tell(self) print 'marks: "%d"' % self.marks t=teacher('pianpian',24,2400) s=student('baixi',24,50) print members = [t,s] for member in members: member.tell()
调了半天总算通了,期间碰见两个错误
Traceback (most recent call last):
File "D:/workspace/pycharm/test/inherit.py", line 45, in <module>
member.tell()
File "D:/workspace/pycharm/test/inherit.py", line 23, in tell
schoolmermber().tell(self)
TypeError: __init__() takes exactly 3 arguments (1 given),这是少传递了参数。
因为一开始是
Traceback (most recent call last):
File "D:/workspace/pycharm/test/inherit.py", line 45, in <module>
member.tell()
File "D:/workspace/pycharm/test/inherit.py", line 23, in tell
schoolmember().tell(self)
NameError: global name 'schoolmember' is not defined 。。 我就在schoolmermber 后面加了(),参数就无法识别了。
至于这个,就是纯粹的字打错了。真他妈的艹淡。服了自己了了。
键盘的 复制粘贴CTRL + C ,有问题,兄弟,大问题。
面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过 继承 机制。继承完全可以理解成类之间的 类型和子类型 关系
这个schoolmember 应该就是抽象类,可以继承抽象类,同时写自己的方法。继承了一个以上的类,就是多重继承,尽量的简单化就最好了。
钟爱爬虫技术,有点喜欢。