Maron's DATA Log

[스스로 배우는 데이터 사이언스] 1주차 복습 강의 - 클래스 본문

Machine Learning/스스로 배우는 데이터사이언스(AI 양재 허브)

[스스로 배우는 데이터 사이언스] 1주차 복습 강의 - 클래스

maron2ee 2020. 12. 2. 21:27

# 클래스

: 객체지향(OOP) 개념

 

프로그램을 실제 세상에 가깝게 모델링하는 기법으로 컴퓨터가 수행하는 작업을 객체들간의 상호 작용으로 표현하여 클래스 혹은 객체들의 집합으로 소프트웨어를 개발함

 

자료형, 컬렉션, 함수, 모듈이 모두 객체

 

* 객체 (object, instance) : 서로 연관된 데이터와 그 데이터를 조작하기 위한 함수를 하나의 집합에 모아놓음

* 멤버 (member) / 속성 (attribute) : 집합의 원소가 되는 변수 나 함수

* 메소드 (method) : 객체의 속성인 함수

 

리스트 클래스










 인스턴스 (객체)
리스트 요소들을 속성으로 가질 수 있다.       리스트 클래스의 메소드를 사용할 수 있다.

  sort( )

  reverse( )

  append( )

  remove( )

   ...

  등의 메소드들

 

 

 

type( ) 은 입력값의 자료형을 알려주는 함수

 

animal = ["lion", "tiger"] 의 경우 type(animal)을 통해 animal 객체가 리스트 클래스 자료형 이라는 것을 알 수 있다. 

 

리스트 클래스는 멤버변수 (속성, 인스턴스 변수) 와 행위 (메소드) 를 가지는 데 이 경우 멤버변수는 "lion", 'tiger" 이고 

행위는 append( ), sort( ), reverse( ), insert( ), remove( ) 등이 있다.

 

리스트 클래스를 사용하여 리스트에서 사용할 수 있는 많은 작업을 효율적으로 수행할 수 있다.

 

파이썬의 모든 객체는 고유의 id를 가진다.

 

 

클래스 정의하기

 

class ClassName:

    <statement>

 

class Cat:

   def meow(self):     # meow( ) 메소드 정의

     print("야옹")

 

cat1 = Cat( )     # 인스턴스 생성

cat1.meow( )     # 메소드 호출

 

인스턴스 생성과 메소드 호출하기 .(마침표) 연산자 사용

 

 

객체 vs. 인스턴스

 

객체 : 하나의 사물

인스턴스 : '클래스' 정의에 의해 만들어진 사물 

'미미'는 '객체'이면서 동시에 'Cat'의 인스턴스 

 

1) 파이썬의 모든 객체는 자료형을 가진다.

2) 파이썬의 객체는 클래스로부터 만들어진다.

3) 파이썬의 클래스는 객체이다.

4) 파이썬의 인스턴스는 클래스로부터 만들어진다.

5) 인스턴스는 객체에 포함되는 객체의 하위개념이다.

6) '미미'는 객체이따.

7) Cat 클래스의 인스턴스는 '미미'이다.

8) 정수 '100'은 int형의 객체이다.

 

'미미'는 인스턴스이다. (O)

Cat 클래스는 인스턴스이다. (X)

 

 

 

클래스의 장점 : 클래스를 이용해 프로그래밍하면 데이터와 데이터를 조작하는 함수를 하나의 묶음으로 관리할 수 있으므로 복잡한 프로그램도 더욱 쉽게 작성할 수 있다.

 

wikidocs.net/1076

 

클래스의 장점 : 클래스를 이용해 프로그래밍하면 데이터와 데이터를 조작하는 함수를 하나의 묶음으로 관리할 수 있으므로 복잡한 프로그램도 더욱 쉽게 작성할 수 있다.

 

절차지향 Vs. 객체지향

 

 

클래스 정의하기

 

class BusinessCard:

   pass

 

클래스의 인스턴스 값은 id값에 바인딩된다.

card1 = BusinessCard( )

card1

 

메소드 (method) : 클래스 내부에 정의돼 있는 함수를 메소드 라고 한다.

 

BusinessCard 클래스를 새롭게 정의했으므로 새롭게 정의된 클래스로 인스턴스 생성

 

class BusinessCard:

   def set_info(self, name, email, addr):     # self 꼭 써줘야! 앞으로 정의할 인스턴스가 가질 변수

     self.name = name

     self.email = email

     self.addr = addr

   

 

 

클래스의 인자값 (name, email, addr) 은 새로운 변수(인스턴스변수, 내부변수에 바인딩(대입) 된다.

 

# 클래스 변수와 인스턴스 변수 (내부 변수)

 

class Account:

   num_account = 0

   def __init__(self, name):     # 특별 메소드

     self.name = name

     Account.num_account += 1     # num_account = num_account +1

   def __del__(self, name):

     Account.num_account -= 1        

 

kim = Account ("kim")

lee = Account("lee")

 

 

# 상속

 

class Parent:

   def can_sing(self):

     print("sin a song")

 

father = Parent( )

father.can_sing( )

 

class LuckyChild(Parent):

   pass

 

child1 = LuckyChild( )

child1.can_sing

 

class LuckyChild2(Parent):

   def can_dance(self):

     print("Shuffle Dance")

 

child2 = LuckyChild2( )

child2.can_sing( )

child2.can_dance( )

Comments