2013-01-09 1 views
-1
# -*- 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

'class student (student) :' –

+2

당신은 학생으로부터 학생을 물려받는 이유는 무엇입니까? – Nilesh

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

왜 클래스 학생 (학생) : 잘 수행하지 못하고 sendsms 메소드를 실행할 수 없습니다. ! –

+0

죄송합니다, 이해가 안됩니다. '학급 학생 (학생) :'단순히 불가능합니다. 왜 3 학년 학생이라고 부릅니까? 왜 다른 이름을 쓰지 그래? 또는 다른 방법으로 : 만약 당신이 다른 방법으로 학생을 확장하고 싶다면'fee' : 그냥 이전 클래스에 추가하십시오. –

+0

실제로'학급 학생 (학생)'은 완벽합니다. 그것은 "현재'student'라는 이름으로 바인딩 된 클래스로부터 상속받은 새로운 클래스를 만든 다음'student'라는 이름을이 새로운 클래스에 바인딩한다는 것을 의미합니다. 아마도 좋은 생각은 아니지만 잘 정의 된 의미를 갖는 유효한 파이썬입니다. – Ben

1
super(student,self).sendsms() 

은 (2 하나를 호출시입니다) 글로벌 이름 student 소요 (1 일입니다) 부모 소요 .sendsms()이라고합니다. 귀하의 재귀.

해결 방법은 이름이 섀도 잉되지 않도록 2 단계 이름을 바꾸는 것입니다.

+0

부적절한 해결책 –

+0

@ user1635700 죄송합니다. 솔루션을 생략하고 문제를 지적했습니다. 나는 그것을 하나 추가했다. – glglgl