python 대상 지향 적 상속 상세 설명

개술
대상 지향 프로 그래 밍(OOP)언어의 주요 기능 중 하 나 는'계승'이다.계승 이란 이러한 능력 을 말한다.기 존 클래스 의 모든 기능 을 사용 할 수 있 고 원래 클래스 를 다시 작성 하지 않 아 도 이 기능 을 확장 할 수 있다.
계승 을 통 해 만들어 진 새로운 종 류 를'자 류'또는'파생 류'라 고 부 르 고 계승 되 는 종 류 를'기 류','부 류'또는'초 류'라 고 부 르 며 계승 하 는 과정 은 일반 에서 특수 한 과정 이다.일부 OOP 언어 에서 하나의 하위 클래스 는 여러 개의 기본 클래스 를 계승 할 수 있다.그러나 일반적인 상황 에서 하나의 자 류 는 하나의 기류 만 있 을 수 있 고 다 중 계승 을 실현 하려 면 다단 계 계승 을 통 해 실현 할 수 있다.
계승 개념의 실현 방식 은 주로 두 가지 가 있 는데 그것 이 바로 계승 실현,인터페이스 계승 이다.
계승 실현 은 기본 클래스 의 속성 과 방법 을 사용 하여 추가 인 코딩 이 필요 없 는 능력 을 말한다.인터페이스 계승 은 속성 과 방법 만 사용 하 는 이름 이지 만 하위 클래스 는 반드시 실현 능력 을 제공 해 야 한다(하위 클래스 재 구성 아버지 클래스 방법).
계승 을 고려 할 때 주의해 야 할 것 은 두 가지 유형 간 의 관 계 는'속'관계 여야 한 다 는 것 이다.예 를 들 어 Employee 는 한 사람 이 고 Manager 도 한 사람 이기 때문에 이 두 가지 유형 은 모두 Person 류 를 계승 할 수 있다.하지만 레 그 류 는 퍼 슨 류 를 이 어 받 을 수 없다.다 리 는 혼자 가 아니 기 때문이다.
OO 개발 패 러 다 임 은 크게 대상→추상 류→유형 조직 을 차원 화 구조(계승 과 합성)→유형 과 사례 로 디자인 하고 실현 하 는 몇 단계 이다.
2.유형의 계승
2.1 상속 의 정의

class Person(object):   #       
 
    def talk(self):    #       
        print("person is talking....")  
 
 
class Chinese(Person):    #       ,   Person 
 
    def walk(self):      #             
        print('is walking...')
 
c = Chinese()
c.talk()      #      Person    
c.walk()     #        
 
#   
 
person is talking....
is walking...
2.2 구조 함수 의 계승
만약 에 우리 가 인 스 턴 스 c 에 인삼 을 전달 하려 면 우 리 는 구조 함수 에 사용 해 야 합 니 다.그러면 구조 함 수 는 어떻게 계승 해 야 합 니까?그리고 하위 클래스 에서 자신의 속성 을 어떻게 정의 합 니까?
계승 류 의 구조 방법:
       1.고전 클래스 의 표기 법:부모 클래스 이름.init__(self,매개 변수 1,매개 변수 2,...)
       2.신식 의 표기 법:슈퍼(하위 클래스,self).init__(매개 변수 1,매개 변수 2,....)

class Person(object):
 
    def __init__(self, name, age):
        self.name = name
        self.age = age
        self.weight = 'weight'
 
    def talk(self):
        print("person is talking....")
 
 
class Chinese(Person):
 
    def __init__(self, name, age, language):  #    ,   
        Person.__init__(self, name, age)  #         ,     :super(Chinese,self).__init__(name,age)
        self.language = language    #         
 
    def walk(self):
        print('is walking...')
 
 
class American(Person):
    pass
 
c = Chinese('bigberg', 22, 'Chinese')
만약 에 우리 가 하위 중국어 에서 구조 함 수 를 간단하게 정의 한다 면 사실은 재 구성 하 는 것 이다.이런 종 류 는 부계 의 속성 을 계승 할 수 없다.그래서 우 리 는 하위 클래스 의 구조 함 수 를 정의 할 때 먼저 계승 하고 구 조 를 해 야 한다.그러면 우 리 는 부모 클래스 의 속성 을 얻 을 수 있다.
하위 구조 함수 기초 부모 구조 함수 과정 은 다음 과 같다.
실례 화 대상 c--->c 호출 하위 클래스init__() ---- > 하위init__()부계 계승init__() ----- > 부류 호출init__()

2.3 하위 클래스 의 부모 클래스 방법 에 대한 재 작성
만약 우리 가 기본 클래스/부모 클래스 의 방법 을 수정 해 야 한다 면,하위 클래스 에서 이 방법 을 재 구성 할 수 있다.다음 토 크()방법

class Person(object):
 
    def __init__(self, name, age):
        self.name = name
        self.age = age
        self.weight = 'weight'
 
    def talk(self):
        print("person is talking....")
 
class Chinese(Person):
 
    def __init__(self, name, age, language): 
        Person.__init__(self, name, age) 
        self.language = language
        print(self.name, self.age, self.weight, self.language)
 
    def talk(self):  #        
        print('%s is speaking chinese' % self.name)
 
    def walk(self):
        print('is walking...')
 
c = Chinese('bigberg', 22, 'Chinese')
c.talk()
 
#   
bigberg 22 weight Chinese
bigberg is speaking chinese
3.상속 사례

class SchoolMember(object):
    '''      '''
    member = 0
 
    def __init__(self, name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex
        self.enroll()
 
    def enroll(self):
        '  '
        print('just enrolled a new school member [%s].' % self.name)
        SchoolMember.member += 1
 
    def tell(self):
        print('----%s----' % self.name)
        for k, v in self.__dict__.items():
            print(k, v)
        print('----end-----')
 
    def __del__(self):
        print('   [%s]' % self.name)
        SchoolMember.member -= 1
 
 
class Teacher(SchoolMember):
    '  '
    def __init__(self, name, age, sex, salary, course):
        SchoolMember.__init__(self, name, age, sex)
        self.salary = salary
        self.course = course
 
    def teaching(self):
        print('Teacher [%s] is teaching [%s]' % (self.name, self.course))
 
 
class Student(SchoolMember):
    '  '
 
    def __init__(self, name, age, sex, course, tuition):
        SchoolMember.__init__(self, name, age, sex)
        self.course = course
        self.tuition = tuition
        self.amount = 0
 
    def pay_tuition(self, amount):
        print('student [%s] has just paied [%s]' % (self.name, amount))
        self.amount += amount
 
t1 = Teacher('Wusir', 28, 'M', 3000, 'python')
t1.tell()
s1 = Student('haitao', 38, 'M', 'python', 30000)
s1.tell()
s2 = Student('lichuang', 12, 'M', 'python', 11000)
print(SchoolMember.member)
del s2
 
print(SchoolMember.member)
 
 
 
#   
----end-----
just enrolled a new school member [haitao].
----haitao----
age 38
sex M
name haitao
amount 0
course python
tuition 30000
----end-----
just enrolled a new school member [lichuang].
3
   [lichuang]
2
   [Wusir]
   [haitao]
여기 서 python 대상 에 대한 계승 에 관 한 상세 한 설명 은 여기까지 입 니 다.더 많은 python 류 의 계승 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기