• 继承与多态


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

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

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

  • 相关阅读:
    Django form组件
    python Ajax
    python 中间件
    python Cookie Session 相关用法
    python 模型 ORM简介
    python 视图 (FBV、CBV ) 、Request 和Response对象 、路由系统
    python Tags 母板 组件 静态文件相关 自定义simpletag inclusion_tag
    python MVC、MTV 框架介绍 Django 模板系统常用语法
    python 外键用法 多对多关系 ORM操作 模板相关
    python 异常处理模块 -堆栈信息(traceback)
  • 原文地址:https://www.cnblogs.com/sakura3/p/8400188.html
Copyright © 2020-2023  润新知