T I L / 5월 27일

Jay·2020년 5월 27일
0

Today I Learned 🧐

목록 보기
20/71
post-thumbnail

Algorithm

  • 전위순회, 중위순회, 후위순회

Python - class

클래스 : 클래스는 객체를 생성해주는 공장 같은 것이다. 클래스 내부에서 객체의 속성과 메소드(행동?)을 설정할 수 있다.

class food:
    def __init__(self, grade) :   # 인스턴스는 init의 매개변수 self에 들어간다고 보면 됨. 
        self.open = '런칭 기념! 할인 30% 해드립니다'
        self.name = self
        self.taste = 5 * grade
        self.price = 10000 + grade * 100
    
    def detail(self) :
        print(self.taste)
        print(self.price)
        print(self.open)
        
   def mat(self) :
        print(self.material)

init함수로 객체의 속성을 설정하고, init제외 일반 함수들로 객체의 메소드를 만든다.

taco = food(5)   [1]

taco.detail()	 [2]
> 25
> 10500
> 런칭 기념! 할인 30% 해드립니다

taco.material = 'cheese, pork'  [3]

taco.mat()               [4]
> cheese, pork

print('오픈행사 : ', taco.open)    [5]
> 오픈행사 :  런칭 기념! 할인 30% 해드립니다

print('평점 : ', taco.taste)
> 평점 :  25

print('가격 : ', taco.price)
> 가격 :  10500

print('재료 : ', taco.material)
> 재료 :  cheese, pork

클래스는 클래스 자체로 사용할 수 없다. 인스턴스(객체)를 만들고 그 인스턴스를 통해 실행된다.

[1] : food라는 클래스를 통해 taco라는 인스턴스를 만들었다. 인자 5는 클래스의 매개변수 grade다.

[2] : taco인스턴스의 detail메소드를 호출했다.

[3] : 클래스 밖에서도 인스턴스 속성을 추가할 수 있다. 이렇게 생성한 속성은 클래스의 다른 인스턴스에는 없는, taco 인스턴스의 유일한 속성이다.

[4] : 클래스 밖에서 생성한 속성은 클래스 내부에서도 사용할 수 있다. 하지만 다른 인스턴스의 경우 오류가 발생한다.

salad = food(3)
salad.material
> AttributeError: 'food' object has no attribute 'material'

[5] : 클래스 밖에서 인스턴스의 속성값을 사용하고 싶다면 self.속성명이 아닌 인스턴스.속성명을 사용해야 한다. self는 클래스 내부에서 인스턴스를 지칭하는 용어로 인스턴스를 선언할 때 init의 self매개변수에 인스턴스가 인자로 들어간다고 생각하면 된다.

자바스크립트할 때 클래스를 공부해서 쉽게 이해할수 있었다.

profile
You're not a computer, you're a tiny stone in a beautiful mosaic

0개의 댓글