추상적 인 이야기 python- 07 (다형성, 캡슐화 및 상속)

추상적 # 장 VII 이야기 
# 7.1 객체 마법
#의 다형성은 : 다른 유형의 객체에서 동일한 작업을 수행 할 수 있으며, 이러한 실행할 수로 "마법"으로 작업
# 패키지 : 외부 숨겨진 개체 작업 관련 원칙적으로 정보
# 상속 : 당신은 일반적인 범주에 따라 특수 학급 만들 수 있습니다
(클래스 (객체의 타입) 객체가 속한 모른 채) # 7.1.1 다형성
(객체의 구조를 알지 못하고) # 7.1.2 및 다형성 방법을
# 7.1 0.3 패키지
'' '
O = OpenObject ()
o.set_name ('경 랜슬롯 ')
인쇄 (o.get_name ())
' ''
# 7.1.4 상속
# 7.2 클래스
서브 클래스가 무엇인지 결국 # 7.2.1 클래스, 슈퍼 클래스
# 7.2.2 사용자 정의 카테고리 생성
: 클래스는 Person
DEF의 SET_NAME (자기 이름) :
self.name 이름 =
DEF의 get_name (자기) :
리턴 self.name
는 def 인사 (자기) :
#Print ( '여보세요, 세상을! 는 I \ '{m}'. 포맷합니다 (self.name))
패스
foo는 = 인격 ()
= 인격 바 ()
foo.set_name ( '루크 스카이 워커')
bar.set_name ( '아나킨 스카이 워커')
인쇄 (foo.greet ())
인쇄 (bar.greet ())

# 7.2.3 방법 속성 기능과
클래스 클래스 :
방법 DEF (자동) :
인쇄 ( '! 자기가 I이있다')
DEF 기능 () :
인쇄 ( '는 I DOT \'T ... ')

예 클래스 = ()
인쇄 (instance.method ())
instance.method 기능 =
인쇄 (instance.method ())

# 7.2.4 숨겨진 얘기

숨겨진에 대해 이야기 # 7.2.4 (액세스를 금지 두 _하는 _ 음주 속성 또는 외부에서 방법을 수정할 수 없습니다)
# 7.2.5 클래스 네임 스페이스의

클래스를 MemberCounter :
회원 = 0
DEF 초기화 (자체)
. MemberCounter.members + 1 =

M1 = MemberCounter ()
m1.init ()
인쇄 (MemberCounter.members)

MemberCounter = M2 ()
인쇄 (MemberCounter.members)
# 7.2.6 지정 수퍼
클래스를 필터 :
DEF 초기화 (자기)
self.blocked = []
DEF 필터 (자기 순서)
창 [순서 IF에서 X X X를위한 self.blocked하지 않음]에
클래스의 spamfilter (필터) : 필터 #의의 spamfilter는 서브 클래스
: DEF 초기화 (자기)
self.blocked =은 [ 'SPAM']

F = 필터 ()
f.init ()
인쇄 (f.filter ( [. 1, 2, 3 ,.]))

S =의 spamfilter ()
s.init ()
인쇄 (s.filter ([ 'SPAM', 'SPAM', '알']))

# 7.2.7 깊이 연구 속됨
인쇄 (issubclass (의 spamfilter는, 필터)) # 결정의 spamfilter 필터 서브 클래스가 아닌
인쇄 (issubclass (필터,의 spamfilter))
인쇄 (의 spamfilter .__ bases__) 기본 클래스 #보기의 spamfilter
인쇄 (필터 .__ bases__) #에

인쇄합니다 (isinstance (S,의 spamfilter)) # 해석 클래스 오브젝트의 인스턴스
인쇄합니다 (isinstance (S, 필터))
인쇄합니다 (isinstance (S, STR))
C = '22되는 '
인쇄합니다 (isinstance ( C, STR))

# 뷰 객체가 속하는 (S의 class__이다 .__) 인쇄, 클래스
#의 복수 7.2.8 수퍼 클래스의
클래스 계산기 :
DEF 계산 단계 (자기, 표현식)
self.value = 평가 후면 (관계식)

클래스 토커 :
DEF 토크 (자동) :
인쇄 (. '하이, 내 valus {IS}'형식 (self.value))
클래스 TalkingCalculator (계산기, 전병) :
패스

TC = TalkingCalculator ()
tc.calculate ( '. * 1 + 2 3')
TC .talk ()
인쇄 (TalkingCalculator .__ bases__)
# 7.2.9 인터페이스 및 성찰
 함께 일을 관련. 글로벌 변수는 동작의 함수 인 경우, 바람직 클래스의 속성 및 메소드로서 사용된다.  너무 가까이 개체 사이 않도록하십시오. 방법은 오직 다른 인스턴스의 상태를, 각각의 인스턴스의 특성과 관련되어야한다, 그들은 스스로 잘 관리 할 수 있습니다. 주의 상속, 특히 다중 상속. 상속은 때때로 유용하지만, 어떤 경우에는 불필요한 복잡성을 가져올 수 있습니다. 제대로 다중 상속을 사용하려면 버그 중 하나를 제외하는 것이 더 어렵다, 어렵다. 그것을 간단한 유지 . 방법은 짧고 컴팩트 보자. 일반적으로, 방법의 대부분은 30 초 읽어 이해 될 수 있도록한다. 방법의 나머지 들어있는 최대한의 공간 또는 제어 패널이다. 어떤 클래스를 결정하고 이러한 클래스는 방법을 포함해야 무엇을 필요로 할 때, 다음과 같이 그것을하려고합니다. (1) 문제 (할 일 어떤 프로그램) 기록 및 표시 명사, 동사와 형용사 모두의 설명입니다. (2) 가능한 클래스 명사를 식별합니다. (3) 가능한 동사를 식별하는 방법. (4) 형용사 가능한 속성을 식별합니다.




















(5) 각 범주에 할당 된 방법과 특성을 식별합니다.
개체 모델의 얼굴을 스케치로, 필요 클래스 (예 : 상속 또는 협력 등) 객체 사이의 관계뿐만 아니라 책임을 고려해야합니다. 더 모델을 개선하기 위해, 당신은 이렇게 할 수 있습니다.
(1) 기록 (또는 시나리오) 경우의 시리즈, 즉 프로그램 장면을 사용하고, 이러한 사용 케이스는 모든 기능을 포함하도록 시도와.
(2) 철저하게 조심스럽게 모델은 당신이 필요로하는 모든 것이 포함되어 있는지 확인, 각 시나리오를 고려하십시오. 그들은이 누락 된 경우, 추가, 개정에 꽤 장소가없는 경우. 모델이 만족 될 때까지이 과정을 계속 반복한다.
모델을 입증하면 프로그램을 쓰기 시작 할 수 있다고 생각 후. 당신은 아마 모델이나 프로그램의 일부를 수정해야하지만, 다행스럽게도 그것은 매우 쉽게 파이썬에 걱정을하지 않습니다. 단지 잘 할 말을하려면 여기를 클릭하십시오.
(더 자세한 객체 지향 프로그래밍 가이드가 필요한 경우, 19 장 추천 책을 참조하십시오.)
'' '
# 7.4 요약
' ''
 객체 : 객체의 속성과 메소드의 조성. 그러나 개체에 속하는 변수 특성은 기능 속성에 저장된다. 다른 기능들에 비해
(연결)에있어서 서로 다른 위치를 가지며, 즉, 그것은 항상 첫 번째 인수로서 속하는 객체이며, 이러한 주장은 보통 자기라는.
 클래스 : 클래스 그룹 (또는 클래스)을 나타내는 객체, 및 각 개체가 특정 클래스에 속한다. 메인 작업은 이들 실시 예를 포함하는 클래스의 메소드를 정의한다.
 다형성 : 다형성이 메소드가 호출 될 수있는 오브젝트가 속한 클래스 몰라도, 즉 오브젝트 및 클래스의 다른 유형에 적용 할 수있는 같은 의미로.
 패키지 : 객체가 숨겨져있을 수 있습니다 (패키지) 내부 상태. 몇몇 언어에서, 오브젝트 만의 방법으로 접근 할 수 있다는 것을 의미 상태 (특성).
파이썬에서, 모든 속성은 공개되어 있지만,이 실수로 일관성없는 상태로 될 수 있으므로주의 개체의 상태로 할 때 프로그래머가 직접 액세스를 행사해야한다.
 연속 : 클래스가이 경우에, 서브 클래스 이상의 클래스가 될 수 있으며, 서브 클래스 상속 슈퍼 클래스의 모든 메소드.
당신은 직교 (독립과 관련이없는) 기능의 조합이 될 수 있도록 수행하여, 하나 개 이상의 수퍼 클래스를 지정할 수 있습니다. 이를 위해, 일반적인 관행은 슈퍼 클래스와 하나 이상의 혼합 슈퍼 클래스의 코어를 사용하는 것입니다.
 인터페이스와 성찰은 : 일반적으로, 당신은 너무 깊이 연구가없는,하지만 전화 다형성에 필요한 방법에 따라 달라집니다. 당신이 메서드 또는 속성을 포함하는 개체를 확인하려는 경우, 당신은이 작업을 완료하는 데 사용할 수있는 기능의 번호를 가지고있다.
 추상 기본 클래스 : ABC 사용 모듈은 추상 기본 클래스를 만들 수 있습니다. 추상 기본 클래스는 기능 서브 클래스가 제공해야하는 지정하지만, 이러한 기능을 구현하지 않는 사용.
 객체 지향 설계 : 객체 지향 객체 지향 설계의 설계 진행 방법에 대한 여부는보기의 많은 다른 점들이있다. 당신이 잡아보기의 어떤 시점에 상관없이 깊이 문제를 이해하고 이해하기 쉬운 디자인을 만들어야합니다.

호출 (오브젝트)가 결정된 오브젝트 (예를 들어, 그 함수 또는 메소드인지 여부)가 호출 될 수 있는지 여부
getattr (개체 이름 [기본]) 속성 값을 가져도 디폴트 값 제공
오브젝트가 지정되었는지 여부를 결정하기으로 hasattr (오브젝트 명)를 속성
isinstance (객체 클래스) 지정된 객체 클래스의 인스턴스인지의 여부를 판정
A가 B에서의 서브 여부를 결정 issubclass (A, B)를
random.choice (시퀀스) 임의로 비어 시퀀스의 요소를 선택
(않은 setattr 개체 이름, 값) 오브젝트의 지정된 값에 지정된 속성을 설정하는
타입 (객체 리턴 된 객체) 타입
'' '
' ''
A = INT (입력 ( '정수 입력'))
#print (내지 X [A]의 경우 내지 Y [X] 및 (2 ** Y <X) 및 (Y % X = 0))
, B = []
, C = []
내지 X (2 들면 + 1) :
D = 0
내지 Y (2, X)
의 경우 (예 ** 2 <= X) 및 (X, Y의 %의 == 0) :
D = 1
브레이크
의 경우 D == 1
b.append (X)
다른 :
c.append (X)
인쇄 (b)
인쇄 (c)
'' '

추천

출처www.cnblogs.com/fuyouqiang/p/11844639.html