객체 지향 프로그래밍은 Python의 기본 개념으로, 개발자가 모듈식, 유지 관리 및 확장 가능한 애플리케이션을 구축할 수 있도록 지원합니다. 프로그래머는 클래스, 객체, 상속, 캡슐화, 다형성 및 추상화와 같은 핵심 OOP 원칙을 이해함으로써 Python OOP 기능의 잠재력을 최대한 활용하여 복잡한 문제에 대한 우아하고 효율적인 솔루션을 설계할 수 있습니다.
Python의 객체 지향 프로그래밍이란 무엇입니까?
Python에서 OOP(객체 지향 프로그래밍)는 프로그래밍에 객체와 클래스를 사용하는 프로그래밍 패러다임입니다. 프로그래밍에서 상속, 다형성, 캡슐화 등과 같은 실제 엔터티를 구현하는 것을 목표로 합니다. 객체 지향 프로그래밍(OOP) 또는 Python의 oops 개념의 주요 개념은 코드의 다른 부분이 이 데이터에 액세스할 수 없도록 함께 작동하는 데이터와 함수를 단일 단위로 바인딩하는 것입니다.
Python의 OOP 개념
- Python 클래스
- Python의 객체
- 파이썬의 다형성
- Python의 캡슐화
- Python의 상속
- Python의 데이터 추상화

Python OOP 개념
영화
파이썬 수업
클래스는 객체의 모음입니다. 클래스에는 객체가 생성되는 청사진이나 프로토타입이 포함되어 있습니다. 일부 특성과 메서드를 포함하는 논리적 엔터티입니다.
클래스 생성의 필요성을 이해하기 위해 품종, 나이와 같은 다양한 속성을 가질 수 있는 개 수를 추적한다고 가정해 보겠습니다. 목록을 사용하는 경우 첫 번째 요소는 개의 품종이고 두 번째 요소는 나이를 나타낼 수 있습니다. 100마리의 서로 다른 개가 있다고 가정해 보겠습니다. 그러면 어떤 요소가 어떤 요소인지 어떻게 알 수 있습니까? 이 개들에게 다른 속성을 추가하고 싶다면 어떻게 해야 할까요? 이것은 조직이 부족하고 수업이 꼭 필요한 것입니다.
Python 수업에 대한 몇 가지 요점:
- 클래스는 키워드 클래스에 의해 생성됩니다.
- 속성은 클래스에 속하는 변수입니다.
- 속성은 항상 공개되며 점(.) 연산자를 사용하여 액세스할 수 있습니다. 예: Myclass.Myattribute
클래스 정의 구문:
class ClassName: # Statement-1 . . . # Statement-N>
Python에서 빈 클래스 만들기
위의 예에서는 class 키워드를 사용하여 Dog라는 클래스를 만들었습니다.
C++에서 문자열 처리파이썬
# Python3 program to # demonstrate defining # a class class Dog: pass>
파이썬 객체
객체 지향 프로그래밍 Python에서 객체는 이와 관련된 상태와 동작을 갖는 엔터티입니다. 마우스, 키보드, 의자, 테이블, 펜 등과 같은 실제 개체일 수 있습니다. 정수, 문자열, 부동 소수점 숫자, 심지어 배열 및 사전도 모두 개체입니다. 더 구체적으로 말하면 단일 정수 또는 단일 문자열이 객체입니다. 숫자 12는 객체이고, 문자열 Hello, world는 객체이고, 목록은 다른 객체를 보유할 수 있는 객체입니다. 당신은 계속해서 객체를 사용해왔지만 그것을 깨닫지 못할 수도 있습니다.
객체는 다음으로 구성됩니다.
- 상태: 객체의 속성으로 표현됩니다. 또한 개체의 속성을 반영합니다.
- 행동: 객체의 메소드로 표현됩니다. 또한 다른 개체에 대한 개체의 반응을 반영합니다.
- 신원: 개체에 고유한 이름을 부여하고 한 개체가 다른 개체와 상호 작용할 수 있도록 합니다.
상태, 행동, 정체성을 이해하기 위해 클래스 개(위에서 설명)의 예를 들어보겠습니다.
- 신원은 개의 이름으로 간주될 수 있습니다.
- 상태 또는 속성은 개의 품종, 나이 또는 색상으로 간주될 수 있습니다.
- 개가 먹는지 자고 있는지에 대한 행동을 고려할 수 있습니다.
객체 생성
그러면 위에 정의된 Dog 클래스의 obj라는 개체가 생성됩니다. 객체와 클래스에 대해 자세히 알아보기 전에 객체와 클래스로 작업하는 동안 사용되는 몇 가지 기본 키워드를 이해해 보겠습니다.
파이썬3 obj = Dog()>
파이썬 그 자체
- 클래스 메소드에는 메소드 정의에 추가 첫 번째 매개변수가 있어야 합니다. 메소드를 호출할 때 이 매개변수에 대한 값을 제공하지 않습니다. Python이 이를 제공합니다.
- 인수를 취하지 않는 메소드가 있는 경우에도 여전히 하나의 인수가 있어야 합니다.
- 이는 C++의 이 포인터 및 Java의 이 참조와 유사합니다.
이 객체의 메소드를 myobject.method(arg1, arg2)로 호출하면 Python에 의해 자동으로 MyClass.method(myobject, arg1, arg2)로 변환됩니다. 이것이 self에 관한 모든 특수한 것입니다.
메모: 자세한 내용은 다음을 참조하세요. Python 클래스의 self
Python __init__ 메서드
그만큼 __init__ 메서드 C++ 및 Java의 생성자와 유사합니다. 클래스의 객체가 인스턴스화되자마자 실행됩니다. 이 메서드는 개체로 수행하려는 초기화를 수행하는 데 유용합니다. 이제 클래스를 정의하고 self 및 __init__ 메서드를 사용하여 일부 객체를 생성해 보겠습니다.
클래스 및 인스턴스 속성을 사용하여 클래스 및 객체 생성
파이썬3 class Dog: # class attribute attr1 = 'mammal' # Instance attribute def __init__(self, name): self.name = name # Driver code # Object instantiation Rodger = Dog('Rodger') Tommy = Dog('Tommy') # Accessing class attributes print('Rodger is a {}'.format(Rodger.__class__.attr1)) print('Tommy is also a {}'.format(Tommy.__class__.attr1)) # Accessing instance attributes print('My name is {}'.format(Rodger.name)) print('My name is {}'.format(Tommy.name))>
산출
Rodger is a mammal Tommy is also a mammal My name is Rodger My name is Tommy>
메소드를 사용하여 클래스 및 객체 생성
여기서 Dog 클래스는 두 가지 속성으로 정의됩니다.
- attr1 값으로 설정된 클래스 속성입니다. 포유 동물 . 클래스 속성은 클래스의 모든 인스턴스에서 공유됩니다.
- __init__은 Dog 클래스의 인스턴스를 초기화하는 특수 메서드(생성자)입니다. self(생성되는 인스턴스 참조)와 name(개 이름을 나타냄)이라는 두 가지 매개 변수를 사용합니다. name 매개변수는 Dog의 각 인스턴스에 이름 속성을 할당하는 데 사용됩니다.
talk 메소드는 Dog 클래스 내에 정의되어 있습니다. 이 메소드는 개 인스턴스의 이름을 포함하는 문자열을 인쇄합니다.
드라이버 코드는 Dog 클래스의 두 인스턴스인 Rodger와 Tommy를 생성하는 것으로 시작됩니다. __init__ 메소드는 제공된 이름으로 이름 속성을 초기화하기 위해 각 인스턴스에 대해 호출됩니다. talk 메소드는 두 인스턴스(Rodger.speak() 및 Tommy.speak()) 모두에서 호출되어 각 개가 자신의 이름이 포함된 명령문을 인쇄하도록 합니다.
파이썬3 class Dog: # class attribute attr1 = 'mammal' # Instance attribute def __init__(self, name): self.name = name def speak(self): print('My name is {}'.format(self.name)) # Driver code # Object instantiation Rodger = Dog('Rodger') Tommy = Dog('Tommy') # Accessing class methods Rodger.speak() Tommy.speak()>
산출
My name is Rodger My name is Tommy>
메모: 자세한 내용은 다음을 참조하세요. Python 클래스 및 객체
파이썬 상속
Python 객체 지향 프로그래밍에서 상속은 한 클래스가 다른 클래스의 속성을 파생하거나 상속하는 기능입니다. 속성을 파생하는 클래스를 파생 클래스 또는 자식 클래스라고 하며 속성이 파생되는 클래스를 기본 클래스 또는 부모 클래스라고 합니다. 상속의 이점은 다음과 같습니다.
np 어디서
- 현실 세계의 관계를 잘 표현하고 있습니다.
- 코드의 재사용성을 제공합니다. 우리는 동일한 코드를 반복해서 작성할 필요가 없습니다. 또한 클래스를 수정하지 않고도 클래스에 더 많은 기능을 추가할 수 있습니다.
- 이는 본질적으로 전이적입니다. 즉, 클래스 B가 다른 클래스 A에서 상속되면 B의 모든 하위 클래스가 자동으로 클래스 A에서 상속됩니다.
상속 유형
- 단일 상속 : 단일 수준 상속을 사용하면 파생 클래스가 단일 부모 클래스의 특성을 상속받을 수 있습니다.
- 다단계 상속: 다중 수준 상속을 통해 파생 클래스는 직계 부모 클래스로부터 속성을 상속받을 수 있으며, 이는 차례로 자신의 부모 클래스로부터 속성을 상속받습니다.
- 계층적 상속: 계층적 수준 상속을 통해 둘 이상의 파생 클래스가 부모 클래스의 속성을 상속받을 수 있습니다.
- 다중 상속: 다중 수준 상속을 사용하면 하나의 파생 클래스가 둘 이상의 기본 클래스에서 속성을 상속할 수 있습니다.
Python의 상속
위 기사에서는 Person(부모 클래스)과 Employee(자식 클래스)라는 두 개의 클래스를 만들었습니다. Employee 클래스는 Person 클래스에서 상속됩니다. 위 코드의 표시 함수에서 볼 수 있듯이 Employee 클래스를 통해 Person 클래스의 메소드를 사용할 수 있습니다. 자식 클래스는 세부사항() 메서드를 통해 표시된 대로 부모 클래스의 동작을 수정할 수도 있습니다.
파이썬3 # Python code to demonstrate how parent constructors # are called. # parent class class Person(object): # __init__ is known as the constructor def __init__(self, name, idnumber): self.name = name self.idnumber = idnumber def display(self): print(self.name) print(self.idnumber) def details(self): print('My name is {}'.format(self.name)) print('IdNumber: {}'.format(self.idnumber)) # child class class Employee(Person): def __init__(self, name, idnumber, salary, post): self.salary = salary self.post = post # invoking the __init__ of the parent class Person.__init__(self, name, idnumber) def details(self): print('My name is {}'.format(self.name)) print('IdNumber: {}'.format(self.idnumber)) print('Post: {}'.format(self.post)) # creation of an object variable or an instance a = Employee('Rahul', 886012, 200000, 'Intern') # calling a function of the class Person using # its instance a.display() a.details()>
산출
Rahul 886012 My name is Rahul IdNumber: 886012 Post: Intern>
메모: 자세한 내용은 당사를 참조하세요. Python의 상속 지도 시간.
파이썬 다형성
객체 지향 프로그래밍 Python에서 다형성은 단순히 다양한 형식을 갖는 것을 의미합니다. 예를 들어, 특정 종의 새가 나는지 여부를 결정해야 하며, 다형성을 사용하면 단일 함수를 사용하여 이를 수행할 수 있습니다.
파이썬의 다형성
이 코드는 Python 클래스의 Python oops 상속 및 메서드 재정의 개념을 보여줍니다. 하위 클래스가 상위 클래스에서 정의된 메서드를 재정의하여 상위 클래스에서 다른 메서드를 상속하면서 특정 동작을 제공하는 방법을 보여줍니다.
컴퓨터 네트워크파이썬3
class Bird: def intro(self): print('There are many types of birds.') def flight(self): print('Most of the birds can fly but some cannot.') class sparrow(Bird): def flight(self): print('Sparrows can fly.') class ostrich(Bird): def flight(self): print('Ostriches cannot fly.') obj_bird = Bird() obj_spr = sparrow() obj_ost = ostrich() obj_bird.intro() obj_bird.flight() obj_spr.intro() obj_spr.flight() obj_ost.intro() obj_ost.flight()>
산출
There are many types of birds. Most of the birds can fly but some cannot. There are many types of birds. Sparrows can fly. There are many types of birds. Ostriches cannot fly.>
메모: 자세한 내용은 당사를 참조하세요. 파이썬의 다형성 지도 시간.
파이썬 캡슐화
Python 객체 지향 프로그래밍에서 캡슐화는 객체 지향 프로그래밍(OOP)의 기본 개념 중 하나입니다. 데이터를 래핑하는 아이디어와 하나의 단위 내에서 데이터에 대해 작업하는 방법을 설명합니다. 이는 변수 및 메소드에 직접 액세스하는 것을 제한하고 실수로 데이터가 수정되는 것을 방지할 수 있습니다. 실수로 인한 변경을 방지하기 위해 객체의 변수는 객체의 메서드를 통해서만 변경할 수 있습니다. 이러한 유형의 변수를 개인 변수라고 합니다.
클래스는 멤버 함수, 변수 등 모든 데이터를 캡슐화하므로 캡슐화의 예입니다.

Python의 캡슐화
위의 예에서는 c 변수를 개인 속성으로 만들었습니다. 우리는 이 속성에 직접 접근할 수도 없고 그 값을 변경할 수도 없습니다.
파이썬3 # Python program to # demonstrate private members # '__' double underscore represents private attribute. # Private attributes start with '__'. # Creating a Base class class Base: def __init__(self): self.a = 'techcodeview.com' self.__c = 'techcodeview.com' # Creating a derived class class Derived(Base): def __init__(self): # Calling constructor of # Base class Base.__init__(self) print('Calling private member of base class: ') print(self.__c) # Driver code obj1 = Base() print(obj1.a) # Uncommenting print(obj1.c) will # raise an AttributeError # Uncommenting obj2 = Derived() will # also raise an AtrributeError as # private member of base class # is called inside derived class>
산출
techcodeview.com>
메모: 자세한 내용은 당사를 참조하세요. Python의 캡슐화 지도 시간.
데이터 추상화
사용자에게 불필요한 코드 세부정보를 숨깁니다. 또한 코드 구현의 민감한 부분을 제공하고 싶지 않을 때 데이터 추상화가 왔습니다.
Python의 데이터 추상화는 추상 클래스를 생성하여 달성할 수 있습니다.
Python의 객체 지향 프로그래밍 | 세트 2(데이터 은닉 및 객체 인쇄)