继承与多态

终于学到这里了,这个其实就是比较让我头痛的一个地方。以前学别的语言就没有很彻底的理解,现在又回来了。看起来不是个好兆头。不过也还好,其实这些语言应当差不了太多的。慢慢学就好。

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 应该就是抽象类,可以继承抽象类,同时写自己的方法。继承了一个以上的类,就是多重继承,尽量的简单化就最好了。

钟爱爬虫技术,有点喜欢。

原文地址:https://www.cnblogs.com/sakura3/p/8400188.html