-2
 # -*- 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()

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

4

2 回答 2

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()

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

顺便说一句,上面的代码给出:

I am student
@@ partner
### student
I am partners
于 2013-01-09T07:46:25.750 回答
1
super(student,self).sendsms()

采用全局名称student(在调用时是第二个),采用其父级(即第一个)并调用其.sendsms(). 瞧你的递归。

解决方案是重命名您的第二个班级,这样名字就不会被隐藏。

于 2013-01-09T07:46:53.737 回答