Python의 객체 지향 프로그래밍 개념

게시 됨: 2020-12-01

객체 지향은 함수와 논리 대신 클래스와 객체의 개념을 따르는 프로그래밍 패러다임입니다. 코드 가독성과 유지 보수성을 높이는 방식으로 코드를 구성하는 멋진 코딩 방식이라고도 합니다. OOP 개념은 프로그래밍에서 중요한 주제이며 데이터 과학의 다양한 작업에 대해 재사용 가능한 모듈을 구축하는 데 도움이 됩니다.

이는 기본 모델을 재사용하여 사용자 정의 레이어를 추가하는 Pytorch와 같은 다양한 라이브러리를 사용하여 딥 러닝 모델을 구축하는 동안 종종 전제 조건입니다. 이 개념이 가르치는 내용과 실제 사용 사례에 적용하는 방법을 살펴보겠습니다.

목차

OOP 개념은 무엇입니까?

모든 브랜드가 될 수 있는 스마트폰을 생각해 보십시오. 하지만 스마트폰은 모든 브랜드에서 공통적으로 사용되는 다양한 제품입니다. 모두 화면, 스피커, 버튼이 있으며 소프트웨어 수준에서는 거의 모두가 Android 기반입니다. 이제 모든 회사가 하드웨어 구성 요소의 대부분을 제어하는 ​​커널을 포함하여 처음부터 소프트웨어를 만드는 경우를 생각해 보십시오.

이것은 지루하고 비용이 많이 드는 과정이 되어 장치의 가격을 상승시킵니다. 제조업체의 요구 사항에 따라 시간이 지남에 따라 변경할 수 있는 추상적이거나 일반화된 모델이 있다면 어떻게 될까요? 이 개념은 코드가 다른 접근자 메서드를 사용하는 클래스에서 구조화된 이 클래스 기반 메서드를 캡처하려고 합니다.

클래스와 객체란?

클래스는 구현해야 하는 항목의 청사진입니다. 이전 예를 고려하면 사람에게 전화를 걸고, 전화를 걸고, 메시지를 받고, 음악을 재생하거나, 다른 작업을 수행하는 기능을 가질 수 있습니다.

이 모든 것은 모든 스마트폰에 공통적이며, 내부 작업도 비슷하여 스마트폰 기능의 클래스 또는 클래스라고 볼 수 있습니다. 개체는 수정된 제품에서 이 공통 구현을 사용할 모든 스마트폰 브랜드로 정의할 수 있습니다.

이 기본 클래스에는 여러 인스턴스가 있을 수 있으며 모든 인스턴스는 다른 개체를 방해하지 않고 다른 값 상태를 유지할 수 있습니다. Python에서는 예약어인 class를 사용하여 클래스를 선언할 수 있습니다. 또한 __init__ 생성자는 클래스 변수를 초기화하는 데 사용됩니다.

클래스 회사:

def __init__ (자신):

self.name = 'upGrad'

def display_name(자신):

print(f"회사명은 {self.name}")

cm = 회사()

cm.display_name()

읽어보기: 인도의 Python 개발자 급여

OOP의 다른 기둥

이제 이 패러다임의 기본 빌딩 블록에 익숙하므로 이 개념의 가장 중요한 기능/특성을 살펴보겠습니다.

캡슐화

이것은 클래스의 메소드(또는 함수) 및 이와 관련된 데이터가 캡슐화되거나 우발적 또는 외부 액세스로부터 보호됨을 나타냅니다. 즉, private 또는 protected 범위에 정의된 속성은 클래스 외부에서 액세스할 수 없습니다.

Python에는 이 언어에 개인 변수의 개념이 없기 때문에 클래스 외부에서 속성에 액세스할 수 있다는 우려가 있습니다.

선언의 시작 부분에 이중 밑줄을 사용하여 개인 속성을 인식하는 방법이 있으며 동일한 객체를 통해 클래스 외부에서 이 속성에 액세스하려고 하면 Python이 감지할 때마다 이름 맹글링을 적용하기 때문에 AttributeError 메시지가 표시됩니다. 개인 변수. 여전히 액세스할 수 있기 때문에 속성에 보안을 제공하지 않습니다.

계승

단어에서 알 수 있듯이 부모 클래스라는 기존 클래스의 일부를 변경 사항이 거의 또는 전혀 없는 자식 클래스라는 새 클래스로 가져옵니다. 모든 스마트폰 브랜드가 기본 기능을 수행하는 데 도움이 되는 일반 전화 클래스를 상속하고 필요에 따라 사용자 경험을 향상시키기 위해 추가 코드를 추가할 수 있는 방식으로 이를 예제에 연결할 수 있습니다. Python에서 클래스 상속은 다음과 같이 수행됩니다.

클래스 A:

일부 콘텐츠

클래스 B(A):

파생 클래스의 내용

상속과 관련하여 함수 재정의라는 또 다른 개념이 있습니다. 일반 스마트폰의 카메라 기능이 그다지 좋지 않고 제조사가 이에 대한 더 나은 솔루션을 가지고 있다고 가정해 보겠습니다. 자식 클래스에서 다시 정의하여 이 함수를 직접 재정의하고 거기에 변경 사항을 적용할 수 있습니다.

추출

하위 클래스 구현에 대한 청사진 또는 인터페이스를 정의합니다. 이는 일부 메서드가 완전히 구현되지 않고 추상 뷰만 정의된 기본 클래스에 정의되어 있음을 의미합니다. 생성할 모듈 및 하위 모듈의 다양한 기능을 추적하는 데 도움이 될 수 있습니다.

예를 들어 일부 스마트폰은 NFC(근거리 연결)를 지원하며 이 기능은 기본 클래스에서 정의할 수 있으며 구현은 결과 전화기의 자식 클래스에서 코딩할 수 있습니다. 이러한 방식으로 추상 기본 클래스는 모듈 및 후속 구현의 전체 보기를 제공할 수 있습니다. 다음은 예입니다.

수업 전화:

def 카메라(자체):

통과하다

def NFC(자체):

통과하다

클래스 Xyz(전화):

def NFC(자체):

참을 반환

자세히 알아보기: 최고의 Python 도구

다형성

어근 의미로 가보면 같은 것의 여러 형태를 의미합니다. 다형성은 전달된 인수의 수 또는 유형을 기반으로 함수를 정의합니다. 예를 들어, 파이썬의 길이 함수는 모든 유형의 이터러블 또는 객체를 취할 수 있으며 정수 길이를 반환합니다.

이것은 또한 함수 오버로딩으로 인용될 수 있지만 여기에 Python 언어의 캐치가 있습니다. 다른 인수로 같은 이름의 함수를 정의할 수 없으며 완료되면 마지막 항목만 고려합니다.

OOP의 실제 사용 사례

우리는 이 개념이 무엇에 관한 것이며 어떤 기능을 제공하는지 보았습니다. 이 개념을 적용할 수 있는 몇 가지 예를 살펴보십시오.

Jinja 템플릿: 경로와 서버 측을 처리하는 Python의 Flask 프레임워크에 대한 경험이 있는 경우 이 템플릿은 프런트 엔드에서 이 데이터를 처리하는 데 도움이 됩니다. 일반적으로 기본 HTML 파일이 생성되어 모든 페이지에 상속되어 웹사이트 전체에서 동일한 레이아웃을 갖게 됩니다.

Kivy 애플리케이션: 크로스 플랫폼(안드로이드 및 IOS) GUI 기반 파이썬 애플리케이션을 빌드할 수 있는 라이브러리이며 여기에서 대부분의 프로그래밍은 OOP 개념을 기반으로 합니다.

ORM: 개체 관계형 매퍼는 모든 언어를 사용하여 응용 프로그램 코드에서 관계형 데이터베이스를 정의하는 방법을 제공합니다. 예를 들어 Django에서는 다양한 유형의 사용자를 위한 클래스를 사용하여 다양한 유형의 모델을 정의할 수 있습니다.

결론

이 기사에서 우리는 OOP 개념이 무엇인지, 빌딩 블록(클래스 및 객체), 다양한 기둥에 대해 논의했으며 이 패러다임이 채택된 몇 가지 예를 강조했습니다. 더 나은 코드 관리, 협업 및 이에 의존하는 다른 프로그램에 추상 기능을 제공하기 때문에 이 프로그래밍 방법이 고려되는 곳이 많이 있습니다.

python, 데이터 과학에 대해 자세히 알고 싶으시면 작업 전문가를 위해 만들어졌으며 10개 이상의 사례 연구 및 프로젝트, 실용적인 실습 워크샵, 업계 전문가와의 멘토링, 업계 멘토와의 1:1 학습, 400시간 이상의 학습 및 최고의 기업과의 취업 지원.

OOP는 무엇입니까?

OOP로 약칭되는 객체 지향 프로그래밍은 기능 및 논리에 따라 구성하는 대신 데이터에 따라 소프트웨어 설계를 구성하는 컴퓨터 프로그래밍 기술입니다. OOP는 개체, 즉 개체를 관리하는 데 필요한 논리보다 개발자가 제어하려는 고유한 속성 및 동작을 가진 데이터 필드에 중점을 둡니다. 이 프로그래밍 방법은 지속적으로 업데이트되거나 유지 관리되는 크고 복잡한 응용 프로그램에 이상적입니다. OOP는 제조, 디자인 및 모바일 애플리케이션 이니셔티브를 다룹니다. 이 언어의 다른 장점은 코드 재사용성, 확장성 및 효율성입니다.

OOP의 다른 언어는 무엇입니까?

객체 지향 프로그래밍 언어는 오늘날 컴퓨터 산업에서 가장 자주 사용되는 여러 코딩 언어를 구성합니다. OOP 언어는 어디에서나 볼 수 있습니다. 이러한 언어는 데이터와 코드를 모두 보유하는 개체를 사용합니다. 캡슐화, 추상화, 다형성 및 상속은 객체 지향 프로그래밍 아이디어입니다. 인기 있는 객체 지향 프로그래밍 언어에는 Java, Python, C++, Lisp 및 Perl이 있습니다. 클래스와 객체 패러다임을 활용한 프로그래밍을 지원합니다. 객체 지향 원칙을 지원하는 다른 언어로는 Perl, Objective-C, Dart, Lisp, JavaScript 및 PHP가 있습니다.

OOP가 선호되는 이유는 무엇입니까?

OOP를 선호하는 데에는 여러 가지 이유가 있습니다. 개발자는 객체 지향 코드를 재사용할 수 있습니다. 상속을 사용하여 이전에 생성된 정보와 기능을 복제할 수도 있습니다. 이것은 시간을 절약하고, 코드를 단순화하고, 공간을 절약하고, 쉽게 코딩할 수 있게 해줍니다. 대부분의 코드가 한 위치에 있고 호출되고 재사용되기 때문에 유지 관리가 훨씬 쉽습니다. 대부분의 언어는 어느 정도의 보안을 제공하지만 캡슐화에 보안이 포함되기 때문에 객체 지향 언어가 더 편리합니다. 객체 지향 프로그래밍 언어는 프로그램을 객체와 클래스로 나눕니다. 이는 애플리케이션에 보다 모듈화된 프레임워크를 제공하기 때문에 유리합니다.