python模块与类与继承

我确实碰到了这个棘手的问题,不过我解决了。这个问题在一些python高手或是有经验的人来说,可能真不算是个问题,但是对于我这样子的初学者来说,着实难到了。

下面贴上代码

class SchoolMember(object):
    def __init__(self,name):
        self.name = name
        print "new a SchoolMember:%s" % self.name

    def tell(self):
        print "SchoolMember:%s" % self.name

class Teacher(SchoolMember):
    def __init__(self,name,salary):
        super(Teacher,self).__init__(name)
        self.salary = salary
        print "new a Teacher:%s,salary:%d" % (self.name,self.salary)

    def tell(self):
        print "Teacher:%s,salary:%d" % (self.name,self.salary)

class Student(SchoolMember):
    def __init__(self,name,score):
        super(Student,self).__init__(name)
        self.score = score
        print "new a Student:%s,score:%d" % (self.name,self.score)

    def tell(self):
        print "Student:%s,score:%d" % (self.name,self.score)

schoolMem = SchoolMember("Lily")
schoolMem.tell()
schoolMem = Teacher("LiLei",3000)
schoolMem.tell()
schoolMem = Student("HanMei",98)
schoolMem.tell()

以上代码段测试通过的。现在要用到模块,也就是要将以上三类进行封装

class SchoolMember(object):
    def __init__(self, name):
        self.name = name
        print "new SchoolMember:%s" % self.name
        
    def tell(self):
        print "School member:%s" % self.name

import SchoolMember

class Teacher(SchoolMember):
    def __init__(self, name, salary):
        super(Teacher, self).__init__(name)
        self.salary = salary
        
    def tell(self):
        print "teacher:%s,salary:%d" % (self.name, self.salary)
        
t = Teacher("Lily", 3000)
t.tell()

import SchoolMember
class Student(SchoolMember):
    def __init__(self, name, score):
        super(Student, self).__init__(name)
        self.score = score
        
    def tell(self):
        print "student:%s,score:%d" % (self.name, self.score)

测试模块:

import Teacher
import Student

teacher1 = Teacher("LiLei", 3000)
stu1 = Student("Lily", 98)

teacher1.tell()
stu1.tell()

分别执行以上4段代码,发现除了第1代码段,其余全错,错误:

Error when calling the metaclass bases

    module.__init__() takes at most x arguments (x+1 given)

错在SchoolMember为模块名,而继承类希望是类名,此时应该在class语句中的SchoolMember后加上.SchoolMember,即

class Teacher(SchoolMember.SchoolMember)

class Student(SchoolMember.SchoolMemeber)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值