본문 바로가기

Python/Python Basic

Class] 1. __init__ & method

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
 
= 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 = [1234
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 = [1234]
---> 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





반응형