phython 기초 공부 내용 정리(클래스)

홍준성·2022년 5월 29일
0

python 기초 공부

목록 보기
9/12

클래스

공통 요소가 모여있는 곳

  1. 주어이다.
    한국어: 원숭이가 바나나를 먹는다.
    영어: Monkey eats banana.
    파이썬 : Monkey.eat("바나나")
    → 클래스는 문장의 맨 앞에 등장하므로 앞글자를 대문자로 작성한다.

  2. 타입이다.
    공통요소가 있는 것들을 여러 개 선언하면 비효율적이기 때문에, 클래스에 한 번씩만 선언하고 해당 필드를 가져다 쓴다.
    대신 해당 필드에 접근하기 위해서는 그 클래스의 타입으로 선언되어야 한다.


클래스 선언

class 클래스명:
	필드(객체, 메소드)

객체(instance variable)

클래스는 추상적인 개념이고 이 추상적인 개념을 실체화(구체화) 기켜야지만 사용할 수 있다.
따라서 추상적인 개념을 실체화(구체화) 시켜놓은 것을 객체라고 한다.

클래스객체
자동차엄마차
도형세모

객체화(instance)

추상적인 개념을 구체화시키는 작업
객체명 = 클래스명()


생성자

  • 클래스명()을 생성자라고 하며, 이름 뒤에 소괄호가 있기 때문에 메소드의 기능과 같다.
  • 하지만 리턴이 없기 때문에 메소드라고 부르지 않고 생성자라고 부른다.
  • 메소드와 생성자를 구분하는 것은 클래스명이 무조건 첫 글자가 대문자이기 때문에 대문자로 시작하고 괄호가 있으면 생성자라고 보면 된다.
  • 클래스에 있는 필드를 메모리에 할당해주고 그 필드의 주소값을 가지고 돌아와야 하기 때문에 개발자가 직접 리턴값을 작성하면 안된다.

생성자의 역할

  1. 해당 필드를 메모리(RAM)에 할당하고 할당된 필드의 주소값을 가져온다.
  2. 초기화

예제

class A:
	data = 10
    
    //객체로 접근해야할 때는 self를 써서 올바른 주소가 가도록 한다.
    def printData(self):
    	print(self.data)
    
    // 객체가 아닌 클래스로 접근하려고 할때
    // 이건 A라는 클래스가 하나이기 때문에 구분할 필요가 없어서 클래스로 바로 접근이 가능하다.
    def intro():
    	print("난 A클래스이다.")

obj1 = A()
obj2 = A()

obj1.data = 20
obj1.printData()
obj2.printData()

##출력값
20
10
class Car:
	//여러 메소드에서 공유할 변수 선언(전역변수)
	brand = ""
    color = ""
    price = 0
    
    //__init__은 initialize(초기화)를 뜻함(초기화 목적)
    //""과 0이 붙는 이유는 아무 값도 입력하지 않았을 때 에러가 나지 않도록 하기 위함
    def __init__(self, brand="", color="", price=0):
    	self.brand = brand
        self.color = color
        self.price = price
    
    def engineStart(self):
    	print(self.brand + "시동 킴")
        
    def engineStop(self):
    	print(self.brand + "시동 끔")

momCar = Car("Benz", "Yellow", 35000)
fatherCar = Car("BMW", "BLUE", 15000)
myCar = Car()
profile
준성이의 개발자 공부 velog

0개의 댓글