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继承问题
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
为什么班学生(学生):表现不好,不能执行发送方法。 ! –
对不起,我不明白这一点。 '班级学生(学生):'根本不可能。你为什么叫你的第三堂课也是学生?你为什么不给它另一个名字?或者相反:如果你想通过另一种方法'学费'扩展学生:只需将其添加到上一课。 –
其实'班级学生(学生)'是非常有意义的。它的意思是“创建一个新类,它继承自当前绑定到名称'student'的类,然后将'student'这个名称绑定到这个新类。这可能不是一个好主意,但它是有效的Python,它具有明确的含义。 – Ben
super(student,self).sendsms()
需要全局名称student
(其是,在主叫,所述第二一个的时间),取它的父(这是第一一个)并调用它的.sendsms()
。听你的递归。
解决方案将重命名您的第二类,以便第一个名称不被遮蔽。
不好的解决方案 –
@ user1635700对不起,我只指出你的问题,省略了解决方案。我现在加了一个。 – glglgl
你打算怎么处理'班级学生(学生):' –
你为什么要继承学生? – Nilesh
你不能有类递归的“递归”。 –