파이썬관련정보

라즈베리파이설정

이제 모든 기술을 모았으니 이제 라즈베리 파이를 설치할 차례입니다. 초보자에게는 힘든 일처럼 보일 수 있지만, 제가 설명해 드릴게요. 마이크로SD 카드를 설정하고 하드웨어를 연결한 다음 Pi를 부팅하고 몇 가지 설정을 구성하기만 하면 됩니다.

다음 단계를 수행하기 위해 다른 컴퓨터에 액세스할 수 없는 경우 이미 설정된 OS와 함께 미리 로드된 마이크로SD 카드를 구입할 수 있습니다. 온라인에서 "사전 설치된 NOOBS Rasberry Pi 마이크로SD 카드"를 검색하면 이러한 카드를 찾을 수 있습니다.

그러나 다른 컴퓨터를 사용할 수 있다면 OS를 직접 설치하는 것이 좋습니다. 이 방법은 유용한 기술입니다. 그렇게 하면, 만약 어떤 일이 잘못되어 다시 시작해야 한다면, 여러분은 무엇을 해야 할지 알 수 있을 거예요. 미리 설치된 마이크로SD 카드도 비쌉니다!

Windows/macOS에 Pi 운영 체제 설치

운영체제는 모든 현대의 컴퓨터에서 실행되는 소프트웨어입니다. 다른 운영체제가 상당히 비슷해 보일 수 있지만 모두 같지는 않습니다. Windows 또는 macOS에 가장 익숙할 것입니다. 그러나 Rasberry Pi는 Linux 운영 체제를 실행합니다.

리눅스는 배포판이 다른 자유 및 오픈 소스 운영 체제 제품군으로, 다양한 용도로 다양한 종류의 리눅스가 존재한다는 것을 의미합니다. 라즈베리 파이의 경우, 대부분의 사람들은 라즈베리 파이 재단이 공식적으로 지원하는 운영 체제인 라스비안 배포판을 사용한다(그림 1⁄6 참조). Rasbian은 파이에서 버터처럼 부드럽게 작동하도록 개발되고 정제되었으며, 여러분이 보통 사용하는 OS와 공통점이 많다는 것을 발견할 수 있을 것입니다.

SD 카드 준비

마이크로SD 카드에 Rasbian을 설치하기 전에 이미 저장되어 있을 수 있는 모든 항목을 먼저 지워야 합니다. 비록 당신의 카드가 새것일지라도, 저는 이것을 하는 것을 추천합니다. 왜냐하면 때때로 그것은 이미 물건이 나올 수 있기 때문입니다. 이 프로세스를 마이크로SD 카드 포맷이라고 합니다. 마이크로SD 카드를 포맷하기 전에 사이드바의 경고를 반드시 읽으십시오!

1. 마이크로SD 카드를 일반 컴퓨터에 삽입합니다. 일부 컴퓨터에는 SD 카드 또는 마이크로SD 카드 포트가 있지만 대부분 없습니다. 컴퓨터에 SD 카드를 연결할 수 있는 공간이 없는 경우 그림 1⁄7과 같은 USB SD 카드 어댑터를 사용해야 합니다. 이 작은 장치를 사용하여 PC의 USB 슬롯 중 하나에 카드를 연결할 수 있습니다. 온라인("SD 카드 USB 어댑터" 검색만 하면) 또는 로컬 컴퓨터 저장소에서 이 정보를 쉽고 저렴하게 찾을 수 있습니다.

2. SD 카드를 연결한 후에는 파일 탐색기에서 SD 카드를 탐색할 수 있습니다. Windows(윈도우)를 사용하는 경우 장치 및 드라이브 아래를 살펴보고 Mac(Mac)을 사용하는 경우 파인더를 사용하여 찾습니다. 마이크로SD 카드의 드라이브 이름을 기록합니다. 이 문자는 컴퓨터가 연결되어 있을 때 할당하는 문자입니다(예: D: 또는 H:).

3. SD 카드가 완전히 지워지고 올바르게 포맷되도록 하는 가장 좋은 방법은 공식 포맷 소프트웨어 SD 카드 포맷터를 사용하는 것입니다. 이 소프트웨어를 설치하려면 https://www.sdcard.org/downloads/,에서 메뉴에서 SD 메모리 카드 포맷터를 클릭하고 운영 체제의 포맷터를 찾으십시오. 조건에 동의하라는 메시지가 표시됩니다. 아래쪽으로 스크롤한 후 계속하려면 동의를 클릭하십시오. 그러면 소프트웨어의 최신 버전이 다운로드됩니다. 이 다운로드가 완료되면 그림 1⁄8과 같은 설치 설정을 실행합니다. 지침을 따르고 이용 약관에 동의해야 합니다.

4. Oncethis설치 프로세스가 완료되었으며 SDCardFormatter를 찾아서 실행합니다.그림 1⁄9와 같은 창이 열립니다. 여기서의 프로세스는 매우 간단합니다. 드롭다운 메뉴에서 카드를 선택하고(앞에서 언급한 드라이브 이름 기억), 빠른 포맷 옵션을 선택한 상태로 유지한 다음 포맷을 클릭합니다. 카드가 성공적으로 포맷되면 진행 표시줄을 확인하십시오!

 

NOOBS 설치

이제 포맷된 빈 마이크로SD 카드가 있습니다. 이제 라스비안 OS를 설치할 차례입니다. 이 프로세스는 라즈베리 파이 재단의 NOOBS(New Out Of the Box Software)를 통해 매우 간단하게 수행되었습니다. 다음 지침을 따르십시오.

1. 컴퓨터에 마이크로SD 카드를 연결한 상태에서 라즈베리 파이 웹사이트(https://www.raspberrypi.org/)로 이동합니다. 페이지 맨 위에 있는 다운로드를 클릭한 다음 NOOBS 링크를 클릭합니다. 최신 NOOBS 정식 버전을 다운로드해야 합니다. Lite 버전을 설치하지 마십시오. 라즈베리 파이를 인터넷에 연결하지 않으면 설치할 수 없습니다. ZIP 다운로드 버튼을 찾아 클릭합니다. 운영 체제가 다운로드될 때까지 기다립니다. 이 작업은 인터넷 속도에 따라 몇 분에서 몇 시간이 걸릴 수 있습니다.

2. NOOBS 다운로드가 완료되면 다운로드 폴더에서 해당 파일을 찾아 압축 파일을 추출합니다. Windows에서 파일을 마우스 오른쪽 단추로 클릭하고 모두 압축을 푼 다음 컴퓨터에서 압축을 푼 운영 체제 파일을 저장할 위치를 선택하고 압축을 클릭합니다. Mac에서는 Safari를 통해 다운로드하면 NOOBS 파일이 자동으로 추출됩니다.

3. 마지막으로 새로 다운로드한 NOOBS 파일로 이동하여 복사하여 마이크로SD 카드에 붙여 넣습니다. 마우스로 모든 항목을 강조 표시하고 복사한 다음 포맷된 카드에 붙여 넣으면 됩니다.

Huzzah! SD 카드를 성공적으로 설정했으며 컴퓨터에서 SD 카드를 안전하게 제거할 수 있습니다. 장치를 제거하기 전에 장치를 마우스 오른쪽 단추로 클릭한 다음 카드를 꺼내십시오.

 

라즈베리 파이 연결 및 배선

다음 단계는 물리적으로 라즈베리 파이를 설정하는 것입니다. 이 작업은 TV 또는 컴퓨터 화면과 같은 일부 공간, Wi-Fi 네트워크 액세스 및 모니터에 대한 액세스가 있는 영역에서 수행해야 합니다.

 

라즈베리 파이의 상자를 풀고 보드 하단의 슬롯에 마이크로SD 카드를 꽂습니다(그림 1⁄3 참조). 끝까지 밀어 넣었는지 확인하세요. 일부 모델(1B+ 및 2B)은 카드를 올바르게 삽입할 때 "딸깍"하는 소리가 나지만 이후 모델(3B/B+)은 그렇지 않습니다.

USB 키보드와 마우스를 라즈베리 파이의 USB 포트에 연결합니다.

HDMI 케이블을 Pi의 HDMI 포트에 꽂습니다. 다른 쪽 끝을 TV나 모니터에 삽입합니다.

이제 시작하려면RaspberryPi를 연결합니다5HDMI 포트 옆에 있는 VMicro★USB 전원 케이블토더 전원 입력(그림 1⁄11 참조). 화면에 LED와 몇 가지 활동이 보일 것입니다. 축하합니다! 파이를 살려주셨군요!

화면에 아무 것도 나타나지 않는 경우 리모컨에서 HDMI 입력 사이를 휙휙 넘겨 올바른 입력을 찾으십시오. 대부분의 화면에는 여러 입력이 있습니다. 일반적으로 Pi에 전원을 연결하기 전에 모니터를 켜야 합니다. 반대로 HDMI 신호를 수신하지 못하는 화면도 있습니다! 따라서 화면을 끄고 HDMI 케이블을 꽂고 화면을 켠 다음 5V 마이크로 USB 전원 케이블을 라즈베리 파이에 꽂아 보십시오.

 

유선 인터넷 연결을 원하고 인터넷 라우터 근처에 있는 경우 라우터의 이더넷 케이블을 USB 포트 옆의 이더넷 포트에 연결하여 Pi를 인터넷에 연결할 수 있습니다. 하지만, 저는 이 책 전체에서 무선 인터넷 연결을 사용할 것이고, 이동의 측면에서 여러분을 자유롭게 하기 위해서도 그렇게 하는 것을 추천합니다.

화면 오른쪽 상단에 번개 기호가 보이면 이는 전원 공급 장치가 충분한 전력을 공급하지 못하므로 시스템을 신뢰할 없다는 Pi 경고입니다. 경우에는 나은 전원 공급 장치(이상적으로 공식적인 전원 공급 장치) 사용해야 합니다.

라즈베리파이제로

시작 및 실행 항목

이 포스팅은 여러분만의 로봇을 만드는 방법을 가르쳐 줄 것입니다. 이 흥미진진한 모험은 모든 종류의 것을 포함할 것이다.

 

자습서

전자제품, 제조 및 프로그래밍.

LED, 버튼, 배터리, 모터 연결부터 로봇에 연결까지

 

하이라이트

제안 및 거래

다음 챕터에서 당신이 알아야 할 모든 것을 안내해 드리겠습니다.

선을 따라가며, 세상을 볼 수 있는 센서 등을 제공합니다! 앞으로 모든 프로젝트에 라즈베리 파이를 사용할 것입니다. 

이제 라즈베리 파이가 무엇인지 알았으니, 파이를 설정해 봅시다.

 

설정 SupGpoert RASBERY PI에 손을 올려 놓기

계속하기 전에, 당연히 라즈베리 파이가 필요합니다! 라즈베리 파이는 로그아웃

전세계적으로 구할 수 있기 때문에, 당신이 어디에 사든지 간에, 하나를 사는 것은 쉬울 것이다.

작성 시 여러 가지 라즈베리 파이 모델을 사용할 수 있습니다. 가장 최신 제품인 라즈베리 파이 3 모델 B+와 라즈베리 파이 제로입니다. 전자는 그림 1⁄1에 표시된 업데이트된 35달러짜리 라즈베리 파이이다. 이 보드는 제가 이 책을 통해 사용할 것입니다. 이 보드는 개발을 위한 최선의 옵션입니다. 더 큰 크기의 커넥터를 가지고 있습니다. 따라서 파이 제로에 필요한 어댑터와 USB 허브를 만지작거리지 않아도 됩니다.

 

라즈베리 파이 제로는 소매가가 단돈 5달러인 헐벗고 작은 보드이다. 파이 제로 W는 무선 버전이라는 점을 제외하면 동일하며, 이는 Wi meaning Fi와 블루투스 기능을 갖추고 있으며 소매점은 10달러이다. 제로 및 제로 W는 그림 1⁄2와 같다.

여러분은 왜 우리가 더 작고 더 컴팩트한 파이 제로를 사용하지 않는지 궁금해 하실지도 모릅니다. 결국, 작은 보드는 더 적은 공간을 차지하기 때문에 로봇을 더 작게 만들거나 더 많은 하드웨어를 위한 공간을 가질 수 있다. 

 

그러나 Pi Zero를 사용하는 경우 USB 장치나 모니터를 연결하기 위해 미니어처 포트에 USB 및 HDMI 어댑터가 필요합니다. 이 어댑터도 별도로 구입해야 합니다. 로봇 분야에서 더 많은 경험을 쌓으면, 나중에 프로젝트에 파이 제로를 사용하는 것이 가치가 있다고 결정할 수 있습니다; 그 때가 되면, 도전하세요!

만약 여러분이 이미 오래된 파이 모델을 가지고 있다면, 걱정하지 마세요. 여러분이 가지고 있는 라즈베리 파이의 버전은 별로 중요하지 않습니다. 왜냐하면 그것들은 모두 상호 호환이 가능하기 때문입니다. 그리고 여러분은 이 책에 있는 로봇들을 만들기 위해 그것들을 사용할 수 있습니다. 유일한 차이점은 무선 인터넷 연결과 같은 용도로 어댑터가 필요하다는 것입니다. 표 1⁄1에는 각 모형에 대한 서로 다른 규격이 나와 있습니다.

 

파이의 첫 맛

여러분이 라즈베리 파이를 처음 봤을 때, 여러분은 당황하는 자신을 발견하게 될 지도 모릅니다. 일반적인 "컴퓨터"를 화면, 키보드, 마우스 및 저장소에 연결할 수 있지만 라즈베리 파이는 약간 다릅니다.

상자를 열면, 모든 종류의 부품이 튀어나와 있는 맨몸으로 보이는 보드를 발견할 수 있습니다. 만약 당신이 Pi 3 B+를 가지고 있다면, 그것은 그림 1⁄3과 똑같이 보여야 한다. 이후 버전은 약간 다르게 보일 수 있지만 기본 기능은 모두 동일합니다.

이러한 모든 구성 요소가 수행하는 기능에 대해 살펴보겠습니다.

 

USB 포트

유선 인터넷 연결을 위한 것입니다.

이더넷 네트워크 포트

유선 인터넷 연결을 위한 것입니다.

 

HDMI 포트

HDMI는 고화질 멀티미디어 인터페이스를 의미하며, 이 포트는 Pi를 TV나 컴퓨터 모니터와 같은 화면에 연결하는 데 사용됩니다.

마이크로 USB 전원 잭

여기서는 모든 라즈베리 파이가 작동하는 데 필요한 5V의 전원을 연결합니다. 이는 많은 모바일과 동일한 종류의 전원 입력입니다.

또한 전원 버튼이 없다는 점도 주목할 필요가 있습니다! 전원 케이블을 연결한 상태에서는 파이가 계속 켜져 있습니다.

 

마이크로SD 카드 슬롯

대부분의 컴퓨터에는 내장 스토리지(예: 랩톱에 하드 드라이브가 있는 경우가 있음)가 있지만, 라즈베리 파이는 "온보드" 스토리지가 없습니다. 대신 컴퓨터가 실행되는 소프트웨어(운영 체제(OS)와 모든 파일은 디지털 카메라에서 찾을 수 있는 것과 마찬가지로 마이크로SD 카드에 저장됩니다. 설정 프로세스의 일부로, 마이크로SD 카드를 구성하고 Pi에 필요한 OS를 설치하는 방법을 보여드리겠습니다.

 

쿼드 코어 1.4Ghz 프로세서

파이 중간에 컴퓨터의 두뇌를 볼 수 있습니다. 새 구매가 얼마나 강력한지 궁금하실 수도 있습니다. 그만큼 빠른가?

노트북이나 데스크탑 컴퓨터로요? 이 프로세서는 Pi의 1GB RAM과 결합되어 라즈베리 파이의 성능을 일부 스마트폰과 거의 비슷한 수준으로 제공합니다. 나중에 알게 되겠지만, 이 프로세서를 사용하면 상당한 양의 컴퓨팅을 수행할 수 있습니다.

 

카메라 커넥터

HDMI 포트 옆에는 클립과 같은 커넥터 라벨이 부착되어 있습니다. 공식 라즈베리 파이 카메라 모듈의 입력 정보입니다. 이 책에서는 로봇을 볼 수 있는 기능을 제공합니다!

 

지피오 핀

라즈베리 파이의 가장 이질적인 특징 중 하나는 그림 1⁄4에 표시된 보드의 상단 가장자리에 있는 40개의 빛나는 금속 핀이다. 이러한 핀을 GPIO 핀이라고 하며, General★Purpose Input/Output을 의미합니다. LED, 센서 및 모터를 포함한 매우 다양한 전자 장치, 부품 및 기타 부품을 제어하도록 이 핀을 프로그래밍할 수 있습니다.

이러한 GPIO 핀은 물리적 컴퓨팅의 세계로 가는 관문입니다. 로봇의 전자 요소(모터, 라인 센서 등)를 연결하는 데 사용할 수 있습니다. 그러면 이 새 하드웨어를 프로그래밍하는 과정을 안내해 드리도록 하겠습니다!

 

필요한 것

보셨듯이, 새 컴퓨터에는 다음과 같은 일부 기본 기능이 부족합니다.

스크린과 키보드 설치 및 실행을 위해 추가 하드웨어가 필요합니다. 다행히도, 여러분은 이미 이것들의 대부분을 가지고 있을 것입니다.

 

A5V 마이크로 USB 전원 어댑터

이것은 라즈베리 파이에 동력을 공급하기 위해 사용됩니다. 어떤 오래된 안드로이드 스마트폰 충전기라도 괜찮습니다. 대부분의 전원 어댑터는 출력을 나열합니다.

따라서 충전기의 출력 전압이 5V이고 출력 전류가 최소 2.5A인지만 확인하면 됩니다. 주변에 이 사양을 충족하지 않는 전원 어댑터가 많습니다. 이러한 물품들 중 하나 때문에 불가사의한 단층에 부딪히는 것은 꽤 흔한 일이다. 예비 전원 어댑터가 없다면 https://www.raspberrypi.org/products/raspberrypi 범용 전원/공급/이라는 공식 어댑터를 구입하십시오.

 

USB 키보드 및 마우스

기본적으로 라즈베리 파이는 입력 형식이 없으므로 처음에 사용하려면 USB 키보드와 마우스가 모두 필요합니다. 만약의

집에 데스크톱 PC가 있는데, 기존 USB 키보드와 마우스를 꺼내서 사용하면 됩니다. 그렇지 않은 경우 온라인 또는 컴퓨터 상점에서 해당 제품을 찾을 수 있습니다.

 

8기가바이트 마이크로SD 카드

언급했듯이, 라즈베리 파이는 온보드 스토리지가 없으므로 마이크로SD 카드(또는 1세대 제품의 경우 일반 SD 카드)가 필요합니다.

라즈베리 파이)를 사용하여 OS를 저장합니다. 온라인이나 컴퓨터 상점에서 구입할 수도 있습니다. 최소 8GB 카드가 필요합니다. 공간이 많을수록 좋습니다!

 

HDMI 케이블

이것은 라즈베리 파이를 HDMI TV 또는 모니터에 연결하는 데 사용됩니다. 온라인 또는 로컬 상점에서 구입할 수 있는 표준 케이블입니다.

 

모니터 또는 TV

라즈베리 파이를 위한 디스플레이 출력이 필요합니다. 컴퓨터 모니터, TV 또는 다른 유형의 화면 등 HDMI 포트가 있는 모든 작업을 수행할 수 있습니다. 대부분의 컴퓨터 모니터에는 DVI 입력이 있으며 HDMI를 선택할 수 있습니다.DVI 어댑터 또는 케이블.

데스크톱 컴퓨터나 랩톱에 액세스할 수 있는 경우에도 매우 유용합니다. 이것은 필수는 아니지만, 다양한 면에서 장점이 될 것이다. 먼저, 라즈베리 파이가 실행될 소프트웨어가 포함된 SD 카드를 준비해야 합니다. 다른 컴퓨터에서 실행해야 합니다. 둘째, 무선으로 파이에 연결하고 근거리 통신망을 통해 파이를 제어할 수 있습니다. 

 

이렇게 하면 모니터에 Pi를 계속 꽂고 뽑을 필요가 없어지며 이를 위해 별도의 컴퓨터가 필요합니다. 근거리 통신망을 통해 파이(Pi)를 사용하면 이 장의 초기 설정 프로세스에 모니터나 TV만 있으면 됩니다. 이것은 30분 이상 걸리지 않을 거예요!

다른 컴퓨터에 액세스할 수 없다면 걱정하지 마십시오. 이 문제를 해결해도 잘 따라갈 수 있습니다.

책의 후반부 챕터에서는 하드웨어, 부품 전자 제품을 많이 사용할 예정이지만 아직 걱정할 필요는 없습니다. 프로젝트를 시작하기 전에 필요한 모든 것을 말씀드리겠습니다.

파이썬코드 디버깅

디버깅

 

코드는 우리에게 영어 문법 수업에서 주의를 기울이는 것의 중요성과 워드 프로세싱 소프트웨어의 자동 수정 기능에 지나치게 의존하는 것이 우리를 어떻게 작은 실수들을 간과하기 쉽게 만들었는지, 여기 쉼표, 저기 콜론, 그리고 다른 것들 중에서 철자가 틀린 변수들을 간과하기 쉽게 만들었는지 상기시킨다.

작은 날씨든 큰 날씨든 실수든 프로그램에 제동을 걸 수 있다. 결과적으로, 여러분의 코드는 전혀 실행되지 않고, 오류를 표시하거나 불쾌한 결과를 주지 않을 것입니다. 여기서 프로그램 문제를 해결하고 문제를 찾아 해결해야 합니다.

프로그래밍 언어에서 이를 프로그램 디버깅이라고 합니다.

잘못된 구문이나 존재하지 않는 변수를 선언하는 것과 같은 작은 실수 또는 문제에 대한 불충분한 이해(따라서 생성되어야 하는 대상과 그 상호작용)와 같은 보다 근본적인 실수 및 잘못된 데이터 흐름은 코드를 기능하지 못하게 할 수 있다.

당신만이 당신의 코드를 가장 잘 이해할 수 있다는 것을 고려하면, 당신은 종종 당신 혼자 당신의 코드를 저장하기에 적합한 위치에 있는 당신 자신을 발견하게 될 것이다. 그러나 수십 년간의 테스트를 통해 코드를 디버깅하는 몇 가지 팁과 트릭을 얻을 수 있었습니다.

그러나 팁으로 넘어가기 전에 첫 번째 디버거를 다운로드하는 것이 중요합니다.

디버거 다운로드

왜냐고요? 파이썬은 이미 기본 제공 디버거와 함께 제공됩니다.

예, 파이썬은 기본 명령줄 인터페이스를 자랑하는 디버거와 다양한 기능과 옵션을 갖추고 있습니다. 그러나 스택 추적 및 다른 유형의 코드에 대한 색상 차별화를 포함하여 초보자를 위한 디버깅을 단순화할 수 있는 특정 기능이 없습니다.

디버깅 도구를 위한 더 나은 옵션이 있습니다.

전체 화면 콘솔 기반 프로그램 디버거인 Pudb 2015.3을 다운로드합니다. 최신 GUI 기반 환경을 갖추고 있으며, 터미널에서 코드를 작성한 위치에 디버그할 수 있습니다.

 

다음 레벨

이전 포스팅은 파이썬 언어의 기본을 소개합니다. 기본 구성 요소, 구문, 기본 용도, 더 큰 프로그램을 만들 때 서로 어떻게 연관되어 있는지. 하지만, 다른 언어들과 마찬가지로, 그것을 발전시키고 잘 하는 유일한 방법은 문제를 해결하기 위해 의식적으로 그것을 사용하려고 노력하는 것이다.

언어의 기본 구성 요소를 도입한 후, 그것은 이제 체스 같다: 여러분은 구성 요소를 알고, 기본 규칙을 알고, 그리고 움직임(합법적이든 불법적이든)을 안다. 그것에 대해 더 많이 읽는 것은 게시판에서 여러분에게 도움이 되지 않을 것입니다. 연습만이 할 것이다.

그러면 당신은 다음에 무엇을 해야 할까요?

파이썬은 컴퓨터 장치와 통신하는 언어이며, 여러분이 쓰는 대부분의 것들은 전면부에 결코 보이지 않을 것입니다. 제 말은, 얼마나 많은 앱을 사용하셨는지, 아니면 지금 여러분이 하고 있는 코드 라인을 알고 있는 게임을 하셨는지요?

표면만 긁어냈다는 것을 이해하라. 기본 코드를 작성하기 시작하면 작성할 수 있는 고급 코드를 만나게 됩니다. 계속해서 연습하고 파이썬 코드 및 팬으로 구성된 온라인 커뮤니티와 질문을 공유하십시오.

파이썬은 지구상에서 가장 진보된 OOP 언어 하나이다. 인내심을 갖고 기본 사항을 숙지한 언어의 고급 기능으로 이동하십시오.

파이썬코드 INHERITANCE

우리는 기능에서의 상속과 같은 장 앞부분에서 이야기했습니다. 그것은 무엇이고 왜 중요한가? 먼저 함수, 변수, 수업 만들기 측면에서 지금까지 우리가 해왔던 것을 다시 한 번 살펴봅시다.

앞에서 다양한 변수와 함수를 그룹화할 수 있는 방법을 살펴보았습니다. 이를 통해 데이터와 처리 코드가 동일한 지점에 존재하여 단일 지점에서 코드를 가로질러 실행하는 것이 더 쉬워진다. 이제 클래스에 부여한 속성(변수)과 데이터(함수)를 처리하는 데 사용할 수 있는 메서드를 통해 새로 생성하는 모든 개체에 대해 새 코드를 작성하지 않고도 해당 클래스의 수많은 인스턴스를 만들 수 있습니다.

데이터베이스에서 발생하는 문제를 충족시키려면 어떻게 해야 할까요? 추가 기능이 있는 도형을 상상해 보십시오. 원래 클래스와 공통적인 특징을 공유하지만 원래 클래스가 처리할 수 없는 추가 특징을 가진 도형을 상상해 보십시오.

차이를 해결하기 위해 새 코드를 만드는 것은 올바른 방법이 아닙니다. 여기서 이상적인 클래스의 모든 속성을 상속하는 자식 클래스를 만드는 동시에 고유한 새 기능을 추가합니다.

여기서 상속이 시작되고 파이썬은 매우 쉽게 구현할 수 있습니다.

어떻게 하는 겁니까?

기존 클래스를 '부모' 클래스로 사용하여 새 클래스를 정의합니다. 따라서 자식 클래스는 부모 클래스에서 모든 것을 가져가는 동시에 새로운 특징과 특성 및 메서드를 추가할 수 있습니다.

new_shape 클래스를 기반으로 빌드합니다.

 

Here’s an example 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 클래스를 사용하여 새 클래스를 정의하려는 경우 코드는 다음과 같습니다.

 

class square(new_shape): def __init__(self,x): self.x = x
self.y = x 

이는 상속해야 하는 매개 변수 집합으로 부모 클래스를 사용했다는 점을 제외하면 new_shape 클래스를 정의한 방법과 매우 유사합니다. 코드를 재정의하고 별도로 작성할 필요 없이 이 새로운 개체를 만족시키는 것이 얼마나 쉬운지 보십시오.

우리는 바뀌어야 할 것만 바꾸고 나머지는 빌렸다. 높이와 너비(x와 y)가 같도록 new_shape의 __init__ 함수를 재정의했을 뿐이다. 그러나 자식 클래스에 정의된 새 변수는 new_shape에 있는 변수를 덮어쓰지 않습니다.

이제, 정사각형 자체가 새로운 클래스가 되었고 우리는 또 다른 클래스를 만드는 데 사용할 수 있습니다! 여기 패턴이 보이나요? 이것은 레고 퍼즐과 같습니다. 여러분은 물체를 만들고 그것들을 벽돌로 사용하여 더 좋고 복잡한 물체들과 프로그램들을 만듭니다.

두 개의 정사각형을 만들어 두 개의 정사각형을 나란히 만들어 봅시다.

 

class 2square(Square): def __init__(self,y): self.y = y
self.x = 2 * y 

def perimeter(self): 

return 2 * self.x + 3 * self.y 

이번에는 코드에 추가적인 방법(함수)도 있습니다. 사각형에 새 모양이 상속된 것은 이 새 클래스의 요구를 충족할 수 없기 때문에 둘레 함수를 재정의했습니다.

2제곱의 인스턴스(instance)를 만드는 경우 이중 제곱은 모두 정사각형 또는 new_형이 아닌 2제곱 클래스에 의해 정의된 속성과 속성이 동일합니다.

 

클래스 포인터 및 사전

이전에 변수 스와핑의 작동 방식을 살펴보았습니다. 예를 들어 var1=var2는 왼쪽 변수를 오른쪽 변수에 저장된 값과 교환합니다.

클래스 인스턴스를 만들 때는 그렇지 않습니다. instance1=not2를 쓰면 실제로 첫 번째 클래스가 오른쪽 클래스를 가리키게 됩니다. "지시"는 두 인스턴스 이름이 모두 동일한 클래스 인스턴스를 참조하고 동일한 클래스 인스턴스를 두 이름 중 하나에서 사용할 수 있음을 의미합니다.

이것은 우리에게 수업의 사전을 가져다 준다.

포인터가 작동하는 방식을 기반으로 파이썬을 사용하면 목록이나 사전의 항목에 클래스 인스턴스를 쉽게 할당할 수 있습니다. 하지만 왜 그럴까요? 무슨 이득이 있나요?

이를 통해 프로그램에서 실행할 클래스 인스턴스를 거의 무제한으로 만들 수 있습니다. 다음은 포인터를 사용하여 사전 인스턴스를 만드는 예입니다. new_shape의 원래 정의와 사각형 및 2sqaure 클래스가 실행되었다고 가정할 때:

 

#Create a dictionary:
dictionary = {}
#Next, create some instances of classes in the dictionary: dictionary[“2square 1”] = 2square(5)
dictionary[“long rectangle”] = new_shape(100,30)
Now you can use them like normal classes! dictionary[“2square 1”].creatorName(“Python Coder”) print dictionary[“2square 1”].author 

print dictionary[“long rectangle”].area() 

이제 새 사전 항목을 만들어 우리가 만든 이전 이름을 더 나은 이름으로 바꾸셨습니다.

 

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

객체 지향 프로그래밍

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

객체 지향 프로그래밍(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) 

 

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

 

괴짜 강연 감상하기

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

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

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

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

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

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