파이썬관련정보

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

객체 지향 프로그래밍

역사적으로 코드는 데이터를 입력, 처리 및 출력 데이터 생성에 사용하는 논리적 절차로 간주되어 왔습니다. 결과적으로, 프로그래밍의 난제는 데이터를 정의하지 않고 데이터를 사용하기 위한 논리를 만드는 방법을 보았다.

객체 지향 프로그래밍(OOP)은 "액션"과 "논리"보다는 객체와 데이터를 사용하여 코드를 구축하는 데 의존하는 프로그래밍 언어 모델이다. 우리가 정말로 관심을 가져야 하는 것은 (그리고 어떤 프로그래머가 항상 가지고 있는) 우리가 그것들을 조작하는 데 필요한 순차적 논리 대신에 우리가 조작할 수 있는 사물이라는 관점을 취한다.

객체지향 프로그래밍은 1960년대에 그 뿌리를 두고 있지만, 소프트웨어의 복잡성과 크기가 빠르게 증가하여 더 강력하고 복잡한 시스템에 자리를 내주기 시작하면서 프로그래밍의 지배적인 패러다임이 되었다.

예를 들어 전자 기기(속성과 속성을 명명할 수 있는 사람), 인간(태도와 속성으로 설명됨), 스마트폰에서 사용하는 앱에 이르기까지 다양하다.

 

OOP 시작하기

OOP(파이썬은 객체 지향 프로그래밍 언어이므로 반드시 사용해야 함)를 적용하는 첫 번째 단계는 코드를 작성하는 데 필요한 개체와 개체 간의 관계 및 조작하려는 개체를 식별하는 것입니다.

이를 데이터 모델링이라고 하지만, 어떤 것을 만들기 위한 전략이나 청사진을 구축하는 것과 같이 생각해 보십시오.

파이썬에서 식별 및 개체를 식별하면 이름에 포함된 일반화된 개체 클래스가 생성됩니다. 이 클래스는 이 개체에 포함된 데이터의 종류/유형과 이 개체가 조작할 수 있는 논리 시퀀스를 정의합니다.

각 클래스에 사용되는 논리 시퀀스는 그것의 메서드로 알려져 있는 반면, 객체가 서로 통신하는 인터페이스를 메시지라고 한다.

 

OOP 사용의 이점

이 프레임워크는 파이썬의 새로운 프로그래밍 방법을 제공한다. 중요한 이점은 다음과 같습니다.

데이터 클래스를 통해 프로그래머는 프로그램에 사용할 새로운 유형의 데이터를 보다 유연하고 창의적으로 만들 수 있습니다. 파이썬에서 특정 데이터 유형을 사용할 수 없는 경우에도 이를 별도의 개체로 쉽게 만들어 코드 내의 함수처럼 사용할 수 있습니다.

데이터 클래스를 사용하면 주 클래스 특성 또는 일부 속성을 공유할 수 있는 데이터 개체의 하위 클래스를 쉽게 정의할 수 있습니다. 하위 클래스가 속성과 특성을 상속하는 이 속성을 상속이라고 합니다. OOP 프레임워크의 이러한 기능은 보다 강력한 데이터 분석을 가능하게 하고, 보다 정확한 코딩이 가능하게 하며, 개발을 상당히 감소시킵니다.

 

OOP는 코드 간에 우발적인 데이터 공유를 방지하는 데이터 숨기기를 허용합니다. 각 클래스에는 반드시 관련되어야 하는 속성 및 데이터 속성 집합이 있으므로 코드 전체에서 사용되는 이 개체의 인스턴스는 지정된 데이터만 사용하기 때문에 데이터 손상 인스턴스를 방지할 수 있습니다.

일단 정의된 클래스는 쉽게 재사용할 수 있습니다. 일단 만들어진 객체는 그것이 만들어진 프로그램과 동일한 기계/네트워크를 사용하는 다른 OOP 코드에 의해 둘 다에 의해 사용될 수 있는 송신에서 전역이 된다.

 

클래스, 개체, 상속

프로그래머들은 게을러야 한다. 그들은 일을 하는 가장 효율적인 방법을 찾아야만 하고, 더 많은 코딩이나 그들이 원하는 것을 하는 시간을 절약해야 합니다.

프로그래밍의 목적은 동작을 단순하고 자동화하여 같은 코드를 다시 쓰는 것을 방지하는 것이다. 함수를 사용하여 호출합니다. 함수를 만든 후에는 코드 내 아무 곳에서나 함수를 호출하여 다시 사용할 수 있습니다. 그러면 인터프리터가 원하는 것을 알 수 있습니다.

그러나 기능에는 한계가 있습니다. 데이터를 사용하지만 정보를 저장하고 보관할 수는 없습니다. 그들이 불려질 때마다, 그들은 새롭게 시작한다. 지금은 특정 함수와 변수가 서로 매우 밀접하게 연관되어 있을 때가 있으며, 함수를 실행할 때마다 이러한 값을 새로운 데이터와 함께 가져와 계산해야 합니다.

 

하지만 하나의 출력 대신 여러 개의 출력과 값을 생성하는 기능이 필요하다면 어떨까요? 여기서 필요한 것은 여러 함수 및 관련 변수를 한 곳에서 그룹화하여 서로 쉽게 상호 작용할 수 있는 기능입니다.

 

팀의 예를 들어보자.

모두 골프장에 가입해 새 골프채를 구입했다.

프로그램에는 클럽(축 길이, 무게, 용서, 스핀 등)에 대한 다양한 변수들이 저장되며, 각 숙박업소가 시간이 지남에 따라 경험하는 영향(축 약화, 좌절 증가, 긁힘 등)을 추적하려고 합니다. 팀 구성원 각각을 위해 기능을 만든다고 가정해 볼 때, 만약 그들이 둘 이상의 클럽을 갖기로 결정한다면 어떻게 될까?

골프 클럽마다 코드를 한 조각씩 적어 주시겠어요?

대부분의 클럽들이 공통적인 특징들을 공유하기 때문에, 이상적인 일은 골프 클럽의 모든 속성을 정의하는 기본적인 범주 또는 이상적인 범주를 만드는 것이다. 따라서 새로운 클럽을 만들 때마다 새로운 속성이나 변경된 속성을 지정하기만 하면 데이터베이스에 새로운 항목이 작성됩니다.

여기서 수업과 사물들이 시작됩니다. 이를 통해 함수와 변수가 함께 상호 작용할 수 있고 필요에 따라 쉽게 수정될 수 있으며 변경되지 않고(다른 코드의 영향을 받지 않는) 작은 독립적인 '커뮤니티'를 만들 수 있습니다.

우리는 먼저 클래스를 만듦으로써 이러한 개체를 만들기 시작합니다.

 

클래스 만들기

수업은 청사진입니다. 무언가에 대한 아이디어죠. 그것은 사용 가능한 기능으로 존재하지 않는다.

만드는 방법을 설명합니다. 이 청사진은 많은 개체를 생성하는 데 사용할 수 있습니다. 클래스 연산자를 사용하여 클래스를 만들 수 있습니다. 클래스의 일반 구문은 다음과 같습니다.

 

class name_of_my_class: [statement 1] [statement 2]
[etc] 

여기 예가 있습니다.

class new_shape:
def __init__(self, x, y):
self.x = x
self.y = y
shape_details = “This is an undescribed shape” creator = “No one lays claim to creating this shape “ def creatorName(self,text):
self.creator = text
def detail(self,text):
self.shape_details = text 

def perimeter(self):
return 2 * self.x + 2 * self.y 

def area(self):
return self.x * self.y
def scaleSize(self,scale): self.x = self.x * scale self.y = self.y * scale 

위는 도형(사각형 또는 직사각형)에 대한 모호한 설명입니다.

설명은 도형에 사용한 변수를 사용하여 정의되며, 함수를 사용하여 새 클래스 'new_shape'를 사용할 수 있는 연산을 정의합니다. 그러나 실제 모양을 만들지 않았습니다. 이것은 단순히 그것의 모양(높이 'x'와 너비 'y')을 정의하고 그것의 속성(면적 및 둘레)을 정의하는 값이 필요한 설명입니다.

'자신'이 다 무엇인지 궁금합니까? 아직 실제 모양을 만들지 않았습니다. 'self'는 수업에서 사물들이 그 자체에서 언급되는 방식이다. 이 파라미터는 함수에 값을 전달하지 않습니다. 결과적으로 인터프리터는 클래스를 정의할 때 코드를 실행하지 않습니다. 그것은 새로운 함수를 만들고 변수를 통과시키는 관행으로 간주되었다.

첫 번째 들여쓰기 수준(코드 줄 바로 뒤에 들여쓰기)에서 생성되는 모든 함수/변수는 자동으로 자체 입력됩니다. 클래스 내의 파라미터 또는 함수를 해당 클래스 내에서 사용해야 하는 경우, 함수의 이름은 이전 코드에서 사용한 self.x와 같은 self.x로 진행되어야 합니다.

클래스 사용

우리는 수업을 만들 수 있다. 자, 이제 질문은: 마법의 청사진을 실제 모양을 만들기 위해 어떻게 사용할 것인가 하는 것입니다.

new_shape의 인스턴스를 생성하기 위해 _init_ 함수를 사용한다.

이전 코드가 실행되었다고 가정하고 셰이프를 만듭니다.

직사각형 = new_shape(80,40)

여기서 __init__ 함수가 작동한다. 클래스(클래스에 대해 일반적으로 인스턴스라고 하는 청사진)를 이미 만들었습니다. 우리는 이것을 다음과 같이 했습니다.

이름(새_모양)
대괄호 안의 값, 이 값은 __init__ 함수에 전달됩니다.

init 함수에 주어진 매개변수를 사용하여 init 함수는 이름 사각형을 할당하여 해당 클래스의 인스턴스를 생성합니다.

이제 new_shape 클래스의 이 새로운 인스턴스는 함수 및 변수의 자체 포함 컬렉션이 되었습니다(나중에 상속에 대해 논의하겠습니다). 이전에 우리는 자아를 사용했다. 클래스에서 정의된 변수와 함수에 액세스하기 위해 해당 클래스에 액세스해야 합니다. 이제 유형(사각형)에 지정한 이름을 사용합니다. 우리는 수업의 변수와 기능에 외부에서 접근할 것이다.

위의 코드가 실행되면 클래스의 속성에 액세스하여 다음 코드로 모양을 만들 수 있습니다.

 

#Calculating the perimeter of the rectangle: print rectangle.perimeter()
#Calculating the area of the rectangle: print rectangle.area() 

#details about the rectangle
rectangle.describe(“A rectangle that is twice as long as it is wide. “) #Scaling the rectangle to half its size, i.e. making it 50% smaller rectangle.scaleSize(0.5) 

클래스가 외부에서 사용될 때 새 개체의 할당된 이름이 어떻게 사용되고 있는지 확인합니다. 반면에, 자기 내부에서 사용될 때는 자아입니다. 연산자가 사용 중입니다.

외부에서 사용할 경우 클래스 내부의 변수 값을 쉽게 변경하고 해당 함수에 액세스할 수 있습니다. 적절한 입력이 주어졌을 때 새로운 제품을 조립하는 공장처럼 그 수업을 생각해 보세요. 클래스를 사용할 때 단일 인스턴스로만 제한되지 않습니다. 여러 개를 가질 수 있습니다. 예를 들어 에서는 얇고 길고 튼튼한 직사각형이라는 다른 개체를 만들 수 있습니다.

 

thinrectangle = new_shape(100,5) longrectangel =new_shape (100,20) sturdyrectangle = new_shape(100,90) 

 

같은 클래스의 변수와 기능에 의존하는 세 개의 인스턴스를 만들었을 때도, 모든 인스턴스는 서로 완전히 독립적이며 프로그램 전체에서 수없이 사용될 수 있습니다.

 

괴짜 강연 감상하기

객체 지향 프로그래밍은 프로그래밍 동작을 설명하는 데 사용되는 특정 단어 집합이 포함된 프레임워크입니다. 다른 프로그래머와 함께 있을 때 어떤 혼란도 피하려면 기본적인 용어를 알아야 한다. 다음은 몇 가지 기본적인 단어입니다.

클래스를 설명하는 것은 클래스를 정의하는 것을 의미합니다(함수와 유사하지만 더 상세함). 캡슐화는 단일 클래스 아래의 유사한 함수 및 변수의 그룹입니다.

클래스 자체는 클래스를 정의하는 코드 청크와 클래스를 사용하여 새 개체를 만드는 데 사용되는 인스턴스를 설명하는 두 가지 인스턴스에서 사용할 수 있습니다. 클래스는 '데이터 구조'라고도 합니다. 데이터를 저장할 수 있으며 제공된 데이터를 처리하는 방법을 가지고 있습니다.

클래스의 속성은 클래스 내의 변수입니다.

메서드는 클래스 내에서 정의한 함수입니다.

클래스 자체는 개체이며 사전, 변수, 목록 등과 같은 동일한 범주에 있습니다.