Class
다루고자 하는 데이터(변수)와 데이터를 다루는 연산(함수)를 하나로 캡슐화(encapsulation)하여 클래스로 표현
Object
- 클래스로 생성되어 구체화 된 객체(인스턴스)
- 실제로 class가 인스턴스화 되어 메모리에 상주하는 상태를 의미
- class가 빵틀이라면 object는 실제로 빵틀로 찍어낸 빵이라고 비유 가능
__init__(self)
- 생성자함수
- 객체가 생성될 때 자동적을 호출되는 초기화 메소드
- 객체가 생성될 때 객체를 기본값으로 초기화하는 특수한 메소드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class Person(object): def __init__(self, name, age): self.name = name self.age = age s1 = Person('tina', 22) print s1 print s1.name print s1.age <<<<< 실행결과 >>>>> <__main__.Person object at 0x0477AB70> tina 22 | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | class Person(object): def __init__(self, name, age): print "__init__called" self.name = name self.age = age s1 = Person('abc', 20) print s1 print s1.name, s1.age print '=' * 20 s2 = Person('efg', 30) print s2.name, s2.age print '=' * 20 a = s1.name print a <<<<< 실행결과 >>>>> __init__called <__main__.Person object at 0x04472150> abc 20 ==================== __init__called efg 30 ==================== abc | cs |
## {object}, {method}() 형태로 호출됨
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | class Person(object): def __init__(self, name, height): self.name = name self.height = height def work(self, hour = 30): print '{} works {} hour very hard'.format(self.name, hour) def work(): print 'Work hard but just a function' p1 = Person('Tracy', 190) p1.work(10) p2 = Person('Abc', 200) p2.work() work() p1 = [1, 2, 34] p1.work() ##리스트를 받는 함수가 없기 때문에 에러발생 <<<<< 실행결과 >>>>> Tracy works 10 hour very hard Abc works 30 hour very hard Work hard but just a function --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-14-12d5436c273d> in <module>() 19 20 p1 = [1, 2, 34] ---> 21 p1.work() AttributeError: 'list' object has no attribute 'work' | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | class Person(object): def __init__(self, name): self.name = name def work(self): print '{} works very hard'.format(self.name) def sleep(self): print '{} sleeps every day'.format(self.name) p1 = Person('Abc') p1.work() p1.sleep() print '=' * 20 p2 = Person('Bob') p2.work() p2.sleep() print '=' * 20 print p1 print p2 <<<<< 실행결과 >>>>> Abc works very hard Abc sleeps every day ==================== Bob works very hard Bob sleeps every day ==================== <__main__.Person object at 0x048172B0> <__main__.Person object at 0x048173D0> | cs |
반응형
'Python > Python Basic' 카테고리의 다른 글
Decorator_01 (Nested function, Closure) (0) | 2017.09.30 |
---|---|
Class] 2. 정보은닉(private, protected, public) (0) | 2017.06.15 |
1. Series (0) | 2017.05.30 |
Day5) 4. import/from import (0) | 2017.05.25 |
Day5) 3. 예외처리(try-except, finally), 예외처리세분화 (0) | 2017.05.25 |