산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> python

파이썬 객체 지향 프로그래밍

Python 객체 지향 프로그래밍

이 자습서에서는 예제를 통해 Python의 객체 지향 프로그래밍(OOP)과 기본 개념에 대해 알아봅니다.

동영상:Python의 객체 지향 프로그래밍

객체 지향 프로그래밍

Python은 다중 패러다임 프로그래밍 언어입니다. 다양한 프로그래밍 접근 방식을 지원합니다.

프로그래밍 문제를 해결하는 인기 있는 방법 중 하나는 객체를 만드는 것입니다. 이것을 객체 지향 프로그래밍(OOP)이라고 합니다.

개체에는 두 가지 특성이 있습니다.

예를 들어 보겠습니다.

앵무새는 다음과 같은 속성을 가지므로 개체입니다.

Python의 OOP 개념은 재사용 가능한 코드를 만드는 데 중점을 둡니다. 이 개념은 DRY(Don't Repeat Yourself)라고도 합니다.

Python에서 OOP의 개념은 몇 가지 기본 원칙을 따릅니다.

<시간>

수업

클래스는 객체의 청사진입니다.

클래스는 레이블이 있는 앵무새의 스케치로 생각할 수 있습니다. 이름, 색상, 크기 등에 대한 모든 세부 정보가 포함되어 있습니다. 이러한 설명을 기반으로 앵무새에 대해 연구할 수 있습니다. 여기에서 앵무새는 개체입니다.

앵무새 클래스의 예는 다음과 같습니다.

class Parrot:
    pass

여기서는 class을 사용합니다. 빈 클래스를 정의하는 키워드 Parrot . 클래스에서 인스턴스를 구성합니다. 인스턴스는 특정 클래스에서 생성된 특정 개체입니다.

<시간>

개체

객체(인스턴스)는 클래스의 인스턴스화입니다. 클래스가 정의되면 객체에 대한 설명만 정의됩니다. 따라서 메모리나 스토리지가 할당되지 않습니다.

parrot 클래스의 개체에 대한 예는 다음과 같습니다.

obj = Parrot()

여기, obj Parrot 클래스의 객체입니다. .

앵무새에 대한 세부 정보가 있다고 가정합니다. 이제 앵무새의 클래스와 객체를 만드는 방법을 보여드리겠습니다.

예제 1:Python에서 클래스 및 객체 생성

class Parrot:

    # class attribute
    species = "bird"

    # instance attribute
    def __init__(self, name, age):
        self.name = name
        self.age = age

# instantiate the Parrot class
blu = Parrot("Blu", 10)
woo = Parrot("Woo", 15)

# access the class attributes
print("Blu is a {}".format(blu.__class__.species))
print("Woo is also a {}".format(woo.__class__.species))

# access the instance attributes
print("{} is {} years old".format( blu.name, blu.age))
print("{} is {} years old".format( woo.name, woo.age))

출력

Blu is a bird
Woo is also a bird
Blu is 10 years old
Woo is 15 years old

위의 프로그램에서 우리는 Parrot라는 이름의 클래스를 생성했습니다. . 그런 다음 속성을 정의합니다. 속성은 개체의 특성입니다.

이러한 속성은 __init__ 안에 정의되어 있습니다. 클래스의 메소드. 객체가 생성되자마자 가장 먼저 실행되는 초기화 메소드입니다.

그런 다음 Parrot의 인스턴스를 만듭니다. 수업. 여기, 블루 그리고 새 개체에 대한 참조(값)입니다.

__class__.species를 사용하여 클래스 속성에 액세스할 수 있습니다. . 클래스 속성은 클래스의 모든 인스턴스에 대해 동일합니다. 마찬가지로 blu.name을 사용하여 인스턴스 속성에 액세스합니다. 및 blu.age . 그러나 인스턴스 속성은 클래스의 모든 인스턴스에 대해 다릅니다.

클래스 및 객체에 대해 자세히 알아보려면 Python 클래스 및 객체로 이동

<시간>

방법

메서드는 클래스 본문 내부에 정의된 함수입니다. 개체의 동작을 정의하는 데 사용됩니다.

예시 2:파이썬에서 메소드 생성

class Parrot:
    
    # instance attributes
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    # instance method
    def sing(self, song):
        return "{} sings {}".format(self.name, song)

    def dance(self):
        return "{} is now dancing".format(self.name)

# instantiate the object
blu = Parrot("Blu", 10)

# call our instance methods
print(blu.sing("'Happy'"))
print(blu.dance())

출력

Blu sings 'Happy'
Blu is now dancing

위의 프로그램에서 sing()라는 두 가지 방법을 정의합니다. 및 dance() . 이들은 인스턴스 객체(예:blu)에서 호출되기 때문에 인스턴스 메서드라고 합니다. .

<시간>

상속

상속은 기존 클래스의 내용을 수정하지 않고 그대로 사용하기 위해 새로운 클래스를 생성하는 방법이다. 새로 형성된 클래스는 파생 클래스(또는 자식 클래스)입니다. 마찬가지로 기존 클래스는 기본 클래스(또는 상위 클래스)입니다.

예시 3:Python에서 상속 사용

# parent class
class Bird:
    
    def __init__(self):
        print("Bird is ready")

    def whoisThis(self):
        print("Bird")

    def swim(self):
        print("Swim faster")

# child class
class Penguin(Bird):

    def __init__(self):
        # call super() function
        super().__init__()
        print("Penguin is ready")

    def whoisThis(self):
        print("Penguin")

    def run(self):
        print("Run faster")

peggy = Penguin()
peggy.whoisThis()
peggy.swim()
peggy.run()

출력

Bird is ready
Penguin is ready
Penguin
Swim faster
Run faster

위의 프로그램에서 Bird라는 두 개의 클래스를 만들었습니다. (상위 클래스) 및 Penguin (자식 클래스). 자식 클래스는 부모 클래스의 기능을 상속합니다. swim()에서 이를 확인할 수 있습니다. 방법.

다시 말하지만, 자식 클래스는 부모 클래스의 동작을 수정했습니다. whoisThis()에서 확인할 수 있습니다. 방법. 또한 새로운 run()를 생성하여 상위 클래스의 기능을 확장합니다. 방법.

또한 super()를 사용합니다. __init__() 내부의 함수 방법. 이를 통해 __init__()을 실행할 수 있습니다. 자식 클래스 안에 있는 부모 클래스의 메소드

<시간>

캡슐화

Python에서 OOP를 사용하여 메서드 및 변수에 대한 액세스를 제한할 수 있습니다. 이렇게 하면 캡슐화라고 하는 데이터가 직접 수정되는 것을 방지할 수 있습니다. Python에서는 밑줄을 접두사로 사용하여 개인 속성을 나타냅니다. 즉, 단일 _ 또는 이중 __ .

예제 4:Python의 데이터 캡슐화

class Computer:

    def __init__(self):
        self.__maxprice = 900

    def sell(self):
        print("Selling Price: {}".format(self.__maxprice))

    def setMaxPrice(self, price):
        self.__maxprice = price

c = Computer()
c.sell()

# change the price
c.__maxprice = 1000
c.sell()

# using setter function
c.setMaxPrice(1000)
c.sell()

출력

Selling Price: 900
Selling Price: 900
Selling Price: 1000

위의 프로그램에서 Computer를 정의했습니다. 수업.

__init__()을 사용했습니다. Computer의 최대 판매가를 저장하는 메소드 . 여기에서 코드를 확인하세요.

c.__maxprice = 1000

여기에서 __maxprice 값을 수정하려고 했습니다. 수업 밖. 그러나 __maxprice 이후 개인 변수이므로 이 수정 사항은 출력에 표시되지 않습니다.

표시된 대로 값을 변경하려면 setMaxPrice()와 같은 setter 함수를 사용해야 합니다. 가격을 매개변수로 사용합니다.

<시간>

다형성

다형성은 여러 형식(데이터 유형)에 대해 공통 인터페이스를 사용하는 기능(OOP에서)입니다.

모양에 색상을 지정해야 하고 여러 모양 옵션(사각형, 정사각형, 원)이 있다고 가정합니다. 그러나 동일한 방법을 사용하여 모든 모양을 색칠할 수 있습니다. 이 개념을 다형성이라고 합니다.

예시 5:Python에서 다형성 사용

class Parrot:

    def fly(self):
        print("Parrot can fly")
    
    def swim(self):
        print("Parrot can't swim")

class Penguin:

    def fly(self):
        print("Penguin can't fly")
    
    def swim(self):
        print("Penguin can swim")

# common interface
def flying_test(bird):
    bird.fly()

#instantiate objects
blu = Parrot()
peggy = Penguin()

# passing the object
flying_test(blu)
flying_test(peggy)

출력

Parrot can fly
Penguin can't fly

위의 프로그램에서 두 개의 클래스 Parrot를 정의했습니다. 및 펭귄 . 각각에는 공통 fly()이 있습니다. 방법. 그러나 기능이 다릅니다.

다형성을 사용하기 위해 공통 인터페이스(예:flying_test())를 만들었습니다. 모든 객체를 취하고 객체의 fly()을 호출하는 함수 방법. 따라서 blu를 전달하면 그리고 페기 flying_test()의 개체 효과적으로 실행되었습니다.

<시간>

기억해야 할 핵심 사항:


python

  1. C# 클래스 및 개체
  2. 파이썬 데이터 유형
  3. 파이썬 연산자
  4. 파이썬 사전
  5. Python 사용자 정의 예외
  6. 파이썬 상속
  7. 자바 싱글톤 클래스
  8. 자동 비전 개체 추적
  9. 자바 - 객체와 클래스
  10. 자바 - 직렬화