Python 학습 노트 06 - 대상 지향

4170 단어
클래스 와 대상
  • 류: 같은 속성 과 방법 을 가 진 대상 의 집합 을 묘사 합 니 다.그것 은 이 집합 에서 모든 대상 이 공유 하 는 속성 과 방법 을 정의 했다.대상 은 클래스 의 인 스 턴 스 입 니 다.
  • 대상: 클래스 를 통 해 정 의 된 데이터 구조 인 스 턴 스.대상 은 두 개의 데이터 구성원 (클래스 변수 와 인 스 턴 스 변수) 과 방법 을 포함한다.
  • 클래스 변수: 클래스 변 수 는 전체 예화 대상 에서 공용 입 니 다.클래스 변 수 는 클래스 에 정의 되 고 함수 체 밖 에 있 습 니 다.클래스 변 수 는 보통 인 스 턴 스 변수 로 사용 되 지 않 습 니 다.
  • 인 스 턴 스 변수: 방법 에 있 는 변 수 를 정의 하고 현재 인 스 턴 스 의 클래스 에 만 작 동 합 니 다.'클래스' 와 '대상' 에 대한 사용: 클래스 는 하나의 템 플 릿 입 니 다. 템 플 릿 에는 여러 개의 함수 가 포함 되 어 있 고 함수 에서 일부 기능 을 실현 할 수 있 습 니 다.대상 은 템 플 릿 에 따라 만 든 인 스 턴 스 입 니 다. 인 스 턴 스 대상 을 통 해 클래스 의 함 수 를 실행 할 수 있 습 니 다.
  • class Person(): #  
        height = 170 #    
    #      ,           
    #    self,       
    #           ,python                   self,                 
        def __init__(self, name, age):
            self.name = name #     
            self.__age = age #     
    
    #   
        def run(self):
            print(" ")
    
        def fight(self):
            print("  ")
    
    p = Person('  ', 18) #       
    

    개인 속성
  • Python 에는 C + + 의 Public 와 private 와 같은 키워드 가 없습니다. 공유 속성 과 사유 속성 을 구별 합 니 다
  • 속성 이름 으로 구분 합 니 다. 속성 명 앞 에 밑줄 '' 2 개 를 추가 하면,이 속성 은 사유 속성 임 을 나타 낸다. 그렇지 않 으 면 공유 속성 이다.

  • del () 방법
  • 대상 을 만 든 후 python 해석 기 는 init () 방법 을 기본 으로 호출 합 니 다.
  • 대상 을 삭제 할 때 python 해석 기 는 기본적으로 하나의 방법 을 호출 합 니 다. 이 방법 은 del () 방법
  • 입 니 다.
    class Animal(object):
    
        #      
        #             
        def __init__(self, name):
            print('__init__     ')
            self.__name = name
    
    
        #     
        #        ,      
        def __del__(self):
            print("__del__     ")
            print("%s        ..."%self.__name)
    
    #     
    dog = Animal(" ")
    
    #     
    del dog
    
    cat = Animal(" ")
    cat2 = cat
    cat3 = cat
    
    print("---     cat  ")
    del cat
    print("---     cat2  ")
    del cat2
    print("---     cat3  ")
    del cat3
    

    출력
    __init__     
    __del__     
             ...
    __init__     
    ---     cat  
    ---     cat2  
    ---     cat3  
    __del__     
             ...
    

    대상 지향 3 대 특성
  • 패키지: 외부 세계 의 숨겨 진 대상 작업 에 대한 세부 사항.
  • 계승: 일반 류 를 바탕 으로 전문 적 인 대상 을 구축한다.
  • 다 태: 서로 다른 대상 에 대해 같은 조작 을 사용 할 수 있다.
  • 부모 클래스 의 방법, 속성 만 계승 하고 자 류 는 계승 합 니 다.
  • #       ,  :
    class Cat(object):
    
        def __init__(self, name, color="  "):
            self.name = name
            self.color = color
    
        def run(self):
            print("%s--  "%self.name)
    
    
    #       ,  Cat   :
    class Bosi(Cat):
    
        def setNewName(self, newName):
            self.name = newName
    
        def eat(self):
            print("%s--  "%self.name)
    
    
    bs = Bosi(" ")
    print('bs    :%s'%bs.name)
    print('bs    :%s'%bs.color)
    bs.eat()
    bs.setNewName('   ')
    bs.run()
    

    실행 결과
    bs    : 
    bs    :  
     --  
       --  
    
  • 다 상속
  • class base(object):
        def test(self):
            print('----base test----')
    class A(base):
        def test(self):
            print('----A test----')
    
    #       
    class B(base):
        def test(self):
            print('----B test----')
    
    #       ,   A、B
    class C(A,B):
        pass
    
    
    obj_C = C()
    obj_C.test()
    
    print(C.__mro__) #    C              
    

    실행 결과
    ----A test----
    (, , , , )
    

    3. 다 형 다 형 개념 은 자바 와 C \ # 와 같은 강 한 유형 언어 에 응용 되 고 Python 은 '오리 유형' 을 숭상 한다.다 형 이란 정의 할 때의 유형 과 실행 할 때의 유형 이 다 르 기 때문에 이 때 는 다 형 이 된다.
    class F1(object):
        def show(self):
            print('F1.show')
    
    class S1(F1):
        def show(self):
            print('S1.show')
    
    class S2(F1):
        def show(self):
            print('S2.show')
    
    #    Func       S1   show  ,     S2   show  ,  ,     S1 S2    
    #          :S1   S2  
    
    def Func(F1 obj):
        """Func        F1    F1     """
    
        print obj.show()
    
    s1_obj = S1()
    Func(s1_obj) #  Func     S1     s1_obj,   S1  show  ,  :S1.show
    
    s2_obj = S2()
    Func(s2_obj) #  Func     Ss     ss_obj,   Ss  show  ,  :S2.show
    

    좋은 웹페이지 즐겨찾기