day-010-대상 프로그래밍 기초

7944 단어

대상방향 프로그래밍 기초


대상방향 기술 소개
  • 클래스(Class): 같은 속성과 방법을 가진 대상의 집합을 설명하는 데 쓰인다.그것은 이 집합의 모든 대상이 공유하는 속성과 방법을 정의했다.대상은 클래스의 실례다.
  • 클래스 변수: 클래스 변수는 전체 실례화 대상에서 공용된다.클래스 변수는 클래스에 정의되고 함수체 밖에 있습니다.클래스 변수는 일반적으로 실례 변수로 사용되지 않는다.
  • 데이터 구성원: 클래스 변수 또는 실례 변수로 클래스와 그 실례 대상과 관련된 데이터를 처리하는 데 사용된다.
  • 방법 재작성: 부류로부터 계승하는 방법이 부류의 수요를 충족시키지 못하면 이를 재작성할 수 있다. 이 과정을 방법의 덮어쓰기(override)라고도 하고 방법의 재작성이라고도 한다.
  • 국부 변수: 방법에 정의된 변수는 현재 실례의 클래스에만 작용한다.
  • 실례 변수: 클래스의 성명에서 속성은 변수로 표시된다.이런 변수를 실례 변수라고 하는데 클래스 성명의 내부에 있지만 클래스의 다른 구성원 방법 외에 성명한 것이다.
  • 계승: 파생 클래스(derived class) 계승 기본 클래스(base class)의 필드와 방법입니다.계승도 하나의 파생류의 대상을 하나의 기류의 대상으로 대하는 것을 허용한다.예를 들어 하나의 Dog 유형의 대상은 Animal 클래스에서 파생되는데 이것은'한 (is-a)'관계를 모의하는 것이다(예를 들어 그림, Dog은 Animal이다).
  • 실례화: 하나의 클래스의 실례, 클래스의 구체적인 대상을 만든다.
  • 방법: 클래스에 정의된 함수.
  • 대상: 클래스를 통해 정의된 데이터 구조의 실례.대상은 두 개의 데이터 구성원(클래스 변수와 실례 변수)과 방법을 포함한다.

  • 1. 클래스 작성 및 인스턴스 객체 작성


    여기서 주로 사용하는 class 키워드 형식은 다음과 같습니다.
    class Myclass:
        'this a test class'
        # do what you want
    

    실례화 클래스의 다른 프로그래밍 언어에서는 일반적으로 키워드 new를 사용하지만, Python에는 이 키워드가 없습니다. 클래스의 실례화는 유사한 함수 호출 방식을 사용합니다.
    다음은 클래스 이름 Employee를 사용하여 인스턴스화하고 init 방법을 통해 매개변수를 수신합니다.
    더욱 명확한 인스턴스:
    class person:
        'some body'
        def __init__(self,name = 'nobody'):
            self.name = name
    
        def movet(self):
            print('i can move')
    
        def eat(self):
            print('i can eat')
    
    
    someone = person()
    someone.movet()
    someone.eat()
    print(someone.__doc__)
    
    thisone = person('zhaosi')
    print(thisone.name)
    

    결과:
    i can move
    i can eat
    some body
    zhaosi
    
    
    __doc__를 통해 클래스의 설명을 볼 수 있고 편리하게 해 줄 수 있어요. self 약간 비슷해요. this하지만 다른 이름을 불러도 돼요. 안 불러도 돼요.

    2. 액세스 속성

    self를 사용하여 객체의 속성에 액세스합니다..를 통해 속성을 증가하고 변경할 수 있으며, =로 속성을 삭제할 수도 있고, 함수를 통해 실현할 수도 있다.
  • del: 액세스 대상의 속성.
  • getattr(obj, name[, default]): 속성이 있는지 확인합니다.
  • hasattr(obj,name): 속성을 설정합니다.속성이 없으면 새 속성이 만들어집니다.
  • setattr(obj,name,value): 속성을 삭제합니다.

  • 인스턴스:
    class student:
        'this a student class'
        student_cnt = 0
        def __init__(self, name ,age):
            self.name =  name
            self.age = age
            student.student_cnt += 1
    
        def can_study(self):
            print('we need study')
    
        def who_you_are(self):
            print('i am ',self.name,', i am ', self.age, 'years young')
    
    
    zhangsan = student('zhangsan',10)
    lisi = student('lisi',12)
    zhangsan.who_you_are()
    lisi.who_you_are()
    zhangsan.age = 13
    zhangsan.who_you_are()
    zhangsan.high = 130
    print(zhangsan.high)
    del zhangsan.high
    print(hasattr(zhangsan,'high'))
    print(getattr(lisi, 'name'))
    setattr(lisi, 'high',120)
    print(lisi.high)
    delattr(lisi,'high')
    print(hasattr(lisi,'high'))
    

    결과:
    i am  zhangsan , i am  10 years young
    i am  lisi , i am  12 years young
    i am  zhangsan , i am  13 years young
    130
    False
    lisi
    120
    False
    

    이것은 비교적 강압적이다. 예를 들어 멤버 변수를 늘리고 삭제할 수 있다.66666

    3. Python 내장 클래스 속성


    바로 타고난 것으로, 주로 정보를 표시하는 것이다
  • delattr(obj, name): 클래스의 속성(한 사전 포함, 클래스의 데이터 속성으로 구성)
  • __dict__: 클래스 문서 문자열
  • __doc__: 유명
  • __name__: 클래스 정의가 있는 모듈(클래스의 전체 이름은__module__이고 클래스가 가져오기 모듈'__main__.className'에 있으면 mymodclassName.__module__와 같다mymod
  • __bases__: 클래스의 모든 부류 구성 요소(모든 부류로 구성된 원조 포함)
  • 인쇄해 보면 한눈에 알 수 있다.
    class testiner:
        'this is test a __doc__'
        def __init__(self):
            pass
    
        def i_have_a_pen(self):
            print('i_have_a_pen')
    
        def i_have_an_apple(self):
            print('i_have_an_apple')
    
    
    test = testiner
    
    print(test.__dict__)
    print(test.__doc__)
    print(test.__name__)
    print(test.__module__)
    print(test.__bases__)
    
    {'__module__': '__main__', '__doc__': 'this is test a __doc__', '__init__': , 'i_have_a_pen': , 'i_have_an_apple': , '__dict__': , '__weakref__': }
    this is test a __doc__
    testiner
    __main__
    (,)
    

    한 종류를 이해하기 편리하다

    4.python 대상 폐기(스팸 수거)


    파이톤은 쓰레기를 추적하고 회수하기 위해 인용계수라는 간단한 기술을 사용했다.
    Python 내부에는 모든 사용 중인 대상이 각각 얼마나 많은 인용을 가지고 있는지 기록되어 있습니다.인용 계수기라고 불리는 내부 추적 변수
    대상이 만들어졌을 때 인용계수를 만들었습니다. 대상이 더 이상 필요하지 않을 때, 즉, 이 대상의 인용계수가 0이 되면 쓰레기로 회수됩니다.그러나 회수는'즉각'이 아니라 해석기가 적당한 시기에 쓰레기 대상이 차지하는 메모리 공간을 회수한다.
    네가 쓰지 않아도 그는 회수할 것이니 메모리를 방출할지 말지 생각할 필요가 없다.

    5. 상속과 다상속


    대상을 향하면 계승이 있어야 하고 그 다음에 계승이 많아야 한다. 합금 같은 느낌은 대체로 이렇다.
    상속:
    class cat (animal):
        'this is one '
    

    다중 상속:
    class taiji(taidi,keji):
        ' '
    

    인스턴스:
    class person:
        'i am a person'
        def __init__(self,name,age):
            self.name = name
            self.age = age
    
        def say(self):
            print('i am ',self.name, ' , i am ', self.age, 'years young')
    
    
    class student(person):
        'i am a student'
        def __init__(self,name,age,high):
            person.__init__(self,name,age)
            self.high = high
    
        def say(self):
            print('i am student ,i am ', self.high, 'cm')
    
    class speak:
        'test a speak'
        def __init__(self,who,what):
            self.who = who
            self.who = what
    
        def say(self):
            print('test say')
    
    class test(speak,student):
        'test'
        def __init__(self,who,what,name, age, high):
            speak.__init__(self, who,what)
            student.__init__(self, name,age,high)
    
    
    test1 = test('xiaoming','duojicheng','xiaoming',12,120)
    test1.say()
    

    결과:
    test say
    

    모두들 say할 줄 알아요. 왼쪽부터 말해요.

    6. 다시 쓰기


    만약 당신의 부류 방법의 기능이 당신의 요구를 만족시키지 못한다면, 당신은 부류에서 당신의 부류를 다시 쓸 수 있습니다. 실례는 다음과 같습니다.
    class parent:
    
        def say(self):
            print('I think i can fly')
    
    
    class son(parent):
    
        def say(self):
            print('no , you cant')
    
    p = parent()
    p.say()
    s = son()
    s.say()
    super(son,s).say()
    

    결과:
    I think i can fly
    no , you cant
    I think i can fly
    

    7. 유형의 사유 방법


    네 방법 앞에 __를 더하면 된다. 예를 들면,
     class test:
        def __you_cant_see(self):
             pass
    

    8. 연산자 재부팅


    Python 역시 연산자 재부팅을 지원하므로 다음과 같이 클래스의 고유한 방법을 재부팅할 수 있습니다.
    class relaod:
        'test str'
        def __init__(self,testadd):
            self.testadd = testadd
        def __str__(self):
            return ('this a new str')
    
        def __add__(self, other):
            return self.testadd + 2*other.testadd
    
    class old:
        ' '
        def say(self):
            pass
    
    a = relaod(10)
    c = relaod(100)
    print('a+c: ', a+c)
    print('test a :', a)
    b = old()
    print('test b :', b)
    

    결과:
    a+c:  210
    test a : this a new str
    test b : <__main__.old object="" at="">
    

    이것은 디스플레이 전시로서, 주로 연산자를 다시 써서 연산하기 편리하고, 매번 길게 쓸 수 있다

    문집 전송문 학습python 100일


    전체 학습python 100일 디렉터리 전송문


    무적 분할선


    그리고 맨 뒤에 대신의 링크 전송문을 붙여주세요.

    좋은 웹페이지 즐겨찾기