🔸객체(object)란?

객체 객체 지향 프로그래밍의 가장 기본적인 단위(혹은 시작점)

모든 현상과 발생하는 모든 사건은 이러한 객체들 간의 상호작용을 통해 발생함

모든 실재하는 대상


🔸객체 지향 프로그래밍

객체들의 모임으로 파악하고자 하는 것

객체를 추상화시켜 속성기능으로 분류한 후, 이것을 다시 변수, 함수로 정의함
이전에는 명령어의 목록으로 봤었는데 그걸 바꾸고자 나옴 [절차지향 -> 객체 지향 프로그래밍, 함수형 프로그래밍]


🔸절차 지향 프로그래밍

모든 절차가 다 기술돼있음(ex.Global data) 
- 장점: 컴퓨터가 고민 안하고 순서가 정해져있어서 실행이 빠름, 프로그램 전체가 유기적으로 연결됨
- BUT, 절차지향의 구조가 점차 복잡해짐. 소프트웨어 위기(소프트웨어가 하드웨어 발전 속도를 못 따라감)
그래서 데이터를 중심으로 절차를 도입해서, 현실의 사물을 나타내고 .... 그리하여 oop를 만듦.

🔸객체지향 프로그래밍이 필요한 이유🙆
프로그래밍 왜 배워요? 현실 세계의 문제를 풀도록 프로그램을 설계해서 반영하려고.

🔸객체지향의 장점 👍

1.객체는 잘 만들어놓으면 재사용 가능(class) (반복적인 코드를 최소화하고 코드를 최대한 간결하게 표현할 수 있음)
2. 객체 그 자체로 데이터와 행동이 정의됨(개발자가 내부 구조를 몰라도 바로 사용 가능 -> 생산성이 올라감), 대규모 소프트웨어 가능함
개발 용이성, 유지 보수 편의성, 코드의 신뢰성 -> 생산성이 증가함(keypoint) -> 즉 돈 많이 벌게 됨


🔸객체지향의 단점
1. 클래스 설계하는 게 매우 중요함, 클래스가 잘못 설계되면 다른 부분에도 영향을 끼침 (많은 노력과 시간이 필요)
2. 실행 속도가 상대적으로 느림(컴퓨터가 생각을 해야 돼서)

 


🔸 클래스

클래스는 객체지향 프로그래밍의 핵심
객체는 클래스에서 정의한 것을 토대로 메모리(실제공간)에 할당된 것이고 클래스는 설계도라고 보면 됨. 원하는 구조의 객체 틀을 짜놓고 비슷한 모양의 객체를 공장처럼 찍어낼 수 있음.

클래스 사용법

 


🌟객체: 속성(data) 또는 행동(method)으로 구성된 모든 것🌟
ex. 이찬혁
클래스(설계도):가수, 객체(실제 사례):이찬혁
클래스로 만든 객체를 인스턴스라고"도" 함

 

🌟 중요 🌟
🌳사용자 정의 타입이 클래스임

(자료형을 메모리에 효율적으로 저장하는데, 내가 원하는 타입을 만들기 위해 하는 것을 클래스라고 한다....?)

🌳파이썬은 모든 것이 객체이다. == 파이썬의 모든 것이 행동과 속성이 존재
클래스를 만드는 건 나만의 데이터 타입을 만드는 것


💡[3,2,1].sort() -> 객체.행동()

 

 

✏️기본 문법

- 🐍snake_case (소문자/언더바) (파이썬에서 주로 snake case 사용)

- 🐫camelCase (소문자로 시작하고 이어지는 단어들의 시작은 대문자로 작성. 즉, 의미/단위가 달라질 때  대문자)

- 🐪PascalCase (단어의 첫 시작은 항상 대문자)

 

💡 Tip) 캐멀케이스>낙타는 "소두"라서 앞에는 소문자이고 뒤에는 다 대문자) (조금 현타..가.. 오지만 암기는 잘될 듯...)

 

🥕 인스턴스
클래스를 통해 생성된 객체

🥕 메서드
함수. 클래스는 수많은 종류의 메서드를 가질 수 있음.


🥕클래스 정의
class MyClass:   [규칙: 이때는 파스칼 케이스로!]


🥕인스턴스 생성
my_instancd = MyClass()


🥕메서드 호출
my_instance.my_method() (이제부터 인스턴스한테 행동을 호출할 수 있음)


🥕속성 접근
my_instance.my_attribute


💡isinstance(A,B): A가 B타입(클래스 name)을 물어볼 때 사용

 


🐱참고🐱


a == b 랑 a is b 랑 다름. "=="은 값이 같으면 트루, "is"는 주소가 같으면 트루
is 는 주로 is None 쓸 때 사용함 (None은 값이바뀌지 않기 때문에 주소가 고정임)

클래스 변수와 인스턴스 변수..... 

 


namespace 
LEGB (뭔데 이거..... 나 왜 모름...)

'파이썬 > 파이썬 심화' 카테고리의 다른 글

인스턴스, 클래스, 정적메서드  (0) 2024.08.05
매직메소드 정리  (1) 2024.08.02

+ Recent posts