[python] 16. class 와 객체
1. 객체지향 프로그램이란??
- 프로그래밍 패러다임이다.
- 프로그램을 모두 객체 단위로 만들고, 객체 관계로 설계, 객체간 서로 상호작용을 통해
프로그램을 동작하게 하는 것이 객체지향 프로그램이다.
2. class의 구조?
- 멤버 변수와 method 으로 구성 된다
* 멤버 변수를 attribue, 또는filed라고도 부른다.
* method를 함수라고도 부른다.
- 특히, method는 멤버 변수를 다루는 method만 정의 되어야 한다.
2. 클래스의 문법
1) class의 문법
- class 키워드로 시작됨
- class 키워드 다음에 class 이름이 위치
- class 이름위에 ()괄호 속에 상속된 클래스 이름이 위치
2) class의 특징
- python의 object class의 기능과 속성을 기본적으로 모두 상속 받는다.
3) class Naming Convention(class 이름 규칙)
- 사용자가 작성한 class는 대문자로 시작하게 이름을 짓는다.
- class이름이 2단어 이상으로 이루어지면 각 첫단어의 첫 알파벳은 대문자여야 한다.
(pascal 표기법을 따른다)
3. 클래스의 구성
1) 생성자
- 함수 모양을 가진다.
- __init__(self) 라고 이름을 갖는다.
- 생성자에서 아무런 역활을 하지 않을시에 pass를 넣어준다.
Ex) def __init__ (self):
pass
- 생서자 함수는 self 파라미터 이외에 여러개의 파라미터를 더 받을수 있다.
Ex) def __init__ (self, name, age):
2) 멤버 변수
- 따로 선언을 하지 않는다.
- self.변수명 을 통해서 바로 생성이된다.
EX) self.name = 'do it now man'
이라고 하면 name이란 멤버변수가 생성된 것이다.
3) 메소드
- 구조는 함수 생성이랑 동일 하다.
- 파라미터로 self를 꼭 넣어주야한다.
- 메소드에서 멤버 변수를 사용하기 위해서는 self 키워를 사용한다.
Ex) def descript(self):
print("method called %s" % self.name)
4. class를 이용하여 객체를 만드는 방법
1) class를 객체로 만들려면 class명에 ()를 붙여주어 변수에 할당하면 된다.
그러게 되면 이 변수는 객체가되는 것이다
EX)
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
smart_student = Student('do it now man', 32)
2) class의 멤버 변수를 사용하는 방법
- "객체명.멤버변수명" 으로사용하면된다.
Ex)
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
smart_student = Student('do it now man', 32)
print("smart student name %s and age %d " % (smart_student.name, smart_student.age))
5.class 상속(Inheritance)
- class의 재사용을 위한 방법 이다.
- 부모로 class의 모든 속성(데이터, 메소드)를 자식 class로 물려 줄수 있다.
그러나 모든 것을 물려주는 것은 아니다.
* 변수와 메소드만 상속 받는다.
* 생성자를 상속받지 않는다.
- python의 모든 클래스는 object(root class이다)를 기본으로 상속 받는다.
그래서 object는 생략이 가능하다.
- 상속 받은 부모 class의 멤버 변수 세팅 방법
명시적으로 부모class를 사용해야한다.
Ex) 부모class명.멤버 변수
6. Override(덮어쓰기)
- 상속된 부모class의 메소드나 속성을 재정의하는 행위
- 이름이 동일하면 overriding이된다.
'ProgrammingLang > python' 카테고리의 다른 글
[python] 18. CSV 파일 다루기 (0) | 2018.11.22 |
---|---|
[python] 17. python으로 엑셀 다루기 (7) | 2018.11.22 |
[python] 15. 예외처리와 로깅 (0) | 2018.11.17 |
[python] 14. 파일과 디렉터리 다루기 및 zip모듈 (0) | 2018.11.15 |
[python] 13. 파일 다루기 (0) | 2018.11.15 |