Python继承问题

问题描述:

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

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

+4

你打算怎么处理'班级学生(学生):' –

+2

你为什么要继承学生? – Nilesh

+0

你不能有类递归的“递归”。 –

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 
+0

为什么班学生(学生):表现不好,不能执行发送方法。 ! –

+0

对不起,我不明白这一点。 '班级学生(学生):'根本不可能。你为什么叫你的第三堂课也是学生?你为什么不给它另一个名字?或者相反:如果你想通过另一种方法'学费'扩展学生:只需将其添加到上一课。 –

+0

其实'班级学生(学生)'是非常有意义的。它的意思是“创建一个新类,它继承自当前绑定到名称'student'的类,然后将'student'这个名称绑定到这个新类。这可能不是一个好主意,但它是有效的Python,它具有明确的含义。 – Ben

super(student,self).sendsms() 

需要全局名称student(其是,在主叫,所述第二一个的时间),取它的父(这是第一一个)并调用它的.sendsms()。听你的递归。

解决方案将重命名您的第二类,以便第一个名称不被遮蔽。

+0

不好的解决方案 –

+0

@ user1635700对不起,我只指出你的问题,省略了解决方案。我现在加了一个。 – glglgl