python 대상 지향 적 상속 상세 설명
6426 단어 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 류 의 계승 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.