Python继承问题

时间:2013-01-09 07:37:50

标签: python oop inheritance

 # -*- coding: utf-8 -*-

    class partner(object):
       _table = 'partner'

       def sendsms(self):
          print "I am partners"

       def sendemail(self):
          print "send email"


    class student(partner):

      _inherit = 'partner'    
      _table = 'student'

      def sendsms(self):
        print "I am student"
        print "@@", self._inherit
        print "###", self._table
        super(student,self).sendsms()

    class student(student):

      _inherit = 'student'

      def fees(self):
        print "1000 INR"

   t = student()
   t.sendsms()

这将进行递归,问题或继承问题是什么?

2 个答案:

答案 0 :(得分:1)

class student(student):是一行代码,根本没有意义。如果您执行类似

的操作
# -*- coding: utf-8 -*-

class partner(object):
    _table = 'partner'

    def sendsms(self):
        print "I am partners"

    def sendemail(self):
        print "send email"


class student(partner):

    _inherit = 'partner'    
    _table = 'student'

    def sendsms(self):
        print "I am student"
        print "@@", self._inherit
        print "###", self._table
        super(student,self).sendsms()

class student2(student):

    _inherit = 'student'

    def fees(self):
        print "1000 INR"

t = student2()
t.sendsms()

相反,它可以工作,但这可能不是你想要做的。没有进一步的解释,我们无法真正帮助你。

BTW,上面的代码给出了:

I am student
@@ partner
### student
I am partners

答案 1 :(得分:1)

super(student,self).sendsms()

获取全局名称student(在调用时,第二个),获取其父级(第一个)并调用其.sendsms()。 Voilà你的递归。

解决方案是重命名你的第二个类,这样第一个名字就不会被遮蔽。