[료 설 봉 선생님 python 튜 토리 얼] - OOP

7242 단어
원본 링크:http://www.cnblogs.com/ChaoyuanJam/p/9741952.html
개술
 
  • 대상 을 대상 으로 프로 그래 밍 하 는 Object Oriented Programming 은 OOP 라 고 부 르 며 프로 그래 밍 사상 이다.OOP 는 대상 을 프로그램의 기본 단원 으로 하고 한 대상 은 데이터 와 조작 데이터 의 함 수 를 포함한다.
  • 데이터 패 키 징, 계승 과 다 형 은 대상 을 대상 으로 하 는 세 가지 특징 이 므 로 우 리 는 나중에 상세 하 게 설명 할 것 이다.
  • 클래스 가 템 플 릿 의 역할 을 하기 때문에 인 스 턴 스 를 만 들 때 우리 가 연결 해 야 한다 고 생각 하 는 속성 을 강제로 입력 할 수 있 습 니 다.특수 한 를 정의 함으로써init__방법, 인 스 턴 스 를 만 들 때 name, score 등 속성 을 묶 습 니 다:
  • 클래스 는 인 스 턴 스 를 만 드 는 템 플 릿 이 고 인 스 턴 스 는 구체 적 인 대상 입 니 다. 각 인 스 턴 스 가 가 진 데 이 터 는 서로 독립 되 고 서로 영향 을 주지 않 습 니 다.
    방법 은 인 스 턴 스 와 연 결 된 함수 입 니 다. 일반 함수 와 달리 방법 은 인 스 턴 스 의 데 이 터 를 직접 방문 할 수 있 습 니 다.
    실례 적 인 호출 방법 을 통 해 우 리 는 대상 내부 의 데 이 터 를 직접 조 작 했 지만 방법 내부 의 실현 세부 사항 을 알 필요 가 없다.
    정적 언어 와 달리 Python 은 인 스 턴 스 변수 에 모든 데 이 터 를 연결 할 수 있 습 니 다. 즉, 두 인 스 턴 스 변수 에 대해 모두 같은 종류의 인 스 턴 스 이지 만 가지 고 있 는 변수 이름 은 다 를 수 있 습 니 다.
    >>> bart = Student('Bart Simpson', 59)
    >>> lisa = Student('Lisa Simpson', 87)
    >>> bart.age = 8
    >>> bart.age
    8
    >>> lisa.age
    Traceback (most recent call last):
      File "", line 1, in 
    AttributeError: 'Student' object has no attribute 'age'
    
  • 내부 속성 이 외부 에 접근 하지 않도록 하려 면 속성의 이름 앞 에 밑줄 두 개 __ 를 붙 일 수 있 습 니 다. Python 에서 인 스 턴 스 의 변수 이름 이 __ 로 시작 하면 하나의 개인 변수 (private) 가 되 고 내부 만 방문 할 수 있 으 며 외부 에 접근 할 수 없 기 때문에 우 리 는 Student 류 를 바 꿉 니 다.
    class Student(object):
    
        def __init__(self, name, score):
            self.__name = name
            self.__score = score
    
        def print_score(self):
            print('%s: %s' % (self.__name, self.__score))
    #             
    
    class Student(object):
        ...
    
        def get_name(self):
            return self.__name
    
        def get_score(self):
            return self.__score
    def set_score(self, score):
     self.__score = score
  • 유형 은

     


     

    • class , 。 Python , str、list、dict :【 】
    • : hi , : 。 ,
    • vs

      ( Java) , Animal 유형 이나 그 하위 유형 이 어야 하 며, 그렇지 않 으 면 호출 할 수 없다 Animal 방법.Python 과 같은 동적 언어 에 있어 서 꼭 들 어 올 필요 가 없습니다 run() 유형.우 리 는 들 어 오 는 대상 에 게 하나의 Animal 방법 만 있 으 면 된다.

    • 소결 계승 은 아버지 류 의 모든 기능 을 직접 가 져 올 수 있다. 그러면 다시 시작 하지 않 아 도 된다. 자 류 는 자신 만 의 독특한 방법 만 새로 추가 하고 아버지 류 가 적합 하지 않 은 방법 을 덮어 쓸 수도 있다.동적 언어의 오리 유형 특징 은 정적 언어 처럼 계승 이 필요 하지 않다 는 것 을 결정 한다.

    •  
      대상 정보 가 져 오기
    • 우 리 는 대상 의 유형 을 판단 하고 사용 run() 함수:
    • isinstance () 사용
    • 한 대상 의 모든 속성 과 방법 을 얻 으 려 면 type() 함 수 를 사용 하여 문자열 을 포함 하 는 list 를 되 돌려 줍 니 다. 예 를 들 어 str 대상 의 모든 속성 과 방법 을 얻 을 수 있 습 니 다.
    • 속성 과 방법 만 열거 하 는 것 으로 는 부족 하 다. 협조 dir(), getattr()setattr(), 우 리 는 한 대상 의 상 태 를 직접 조작 할 수 있다.
    • 내 장 된 일련의 함 수 를 통 해 우 리 는 임의의 Python 대상 을 분석 하여 내부 의 데 이 터 를 얻 을 수 있다.주의해 야 할 것 은 대상 정 보 를 모 를 때 만 우 리 는 대상 정 보 를 얻 을 수 있다 는 것 이다.
    • 인 스 턴 스 속성 과 클래스 속성
    • >>> class Student(object):
      ...     name = 'Student'
      ...
      >>> s = Student() #     s
      >>> print(s.name) #   name  ,       name  ,       class name  
      Student
      >>> print(Student.name) #     name  
      Student
      >>> s.name = 'Michael' #      name  
      >>> print(s.name) #               ,  ,       name  
      Michael
      >>> print(Student.name) #          , Student.name      
      Student
      >>> del s.name #        name  
      >>> print(s.name) #     s.name,     name      ,  name        
      Student

       
      #        
      
      class Student(object):
          count = 0
      
          def __init__(self, name):
              self.name = name
              Student.count += 1

       
       
        hasattr()

      :https://www.cnblogs.com/ChaoyuanJam/p/9741952.html

    좋은 웹페이지 즐겨찾기