클래스

기본 형태

class 클래스이름[(상속 클래스명)]:
<클래스 변수 1>
<클래스 변수 2>
...
def 클래스함수1(self[, 인수1, 인수2,,,]):
<수행할 문장 1>
<수행할 문장 2>
...
def 클래스함수2(self[, 인수1, 인수2,,,]):
<수행할 문장1>
<수행할 문장2>
...
...

self라는 것이 매우 특이합니다. self.name = name 이런식으로 쓸 수가 있는데 name이 클래스 변수로 선언이 되어있지 않아도 사용할 수 있습니다. self.name을 할 때 만드는 것 같은데 변수들의 scope이 어떻게 되는 것인지는..흠.. 모르겠군요.

클래스의 인스턴스들만 클래스에 있는 메소드를 사용하도록 하려면 저기 있는 self라는 녀석을 사용해야 합니다.

class Keesun:
      
    def setData(self, name, age):
        self.aName = name
        self.aAge = age

    def eat(self, something):
        print “%s, %s를 먹는다.” %(self.aName, something)

>>> me = Keesun()
>>> me.setData(“기선”, 26)
>>> me.aAge
26
>>> me.eat(“과자”)
기선, 과자를 먹는다.

함수

>>> def sum(*args):
…     sum = 0
…     for i in args:
…             sum = sum + i
…     return sum

위와 같은 형태로 sum이라는 함수를 만들었습니다. def 함수명(인수): 이렇게 선언하고 그 아래에 정의를 해주면 되는 듯 합니다. *args 는 가변인수를 뜻합니다. 인자를 초기화 할 수 도 있습니다.

>>> def call(name, age=20):
…     print name
…     print age

age를 20으로 초기화 해놨기 때문에 name만 전해 줘도 됩니다. 물론 age도 주면 그에 맞게 값이 변합니다.

>>> call(“기선”)
기선
20
>>> call(“기선”, 26)
기선
26
>>> name = ‘기선’
>>> call(name)
기선
20
>>> myName = ‘기선’
>>> call(myName)
기선
20
>>> name = “기선”
>>> call(name)
기선
20

return을 만나면 함수에서 나가는 것은 java와 같은데 약간 특이합니다. 여러 개의 값을 return하고 싶을때 return 값1, 값2, 값3 이렇게 적어 주면 터플로 리턴해줍니다.

>>> def call():
…     return 1, 2, 3

>>> a = call()
>>> a
(1, 2, 3)

for문

range()라는 함수와 자주 쓰이는것 같습니다. java에서 for(int i = 0 ; i < 10 ; i++) 이것을 Python에서는 for i in range(10): 이렇게 씁니다. range(5,10) 이렇게도 쓸 수가 있는데 5 이상 10 미만을 뜻합니다. 즉 [5, 6, 7, 8, 9] 이런 배열을 만들어 주는듯 합니다.

>>> a = [‘spring’, ‘hibernate’, ‘python’]
>>> for i in range(len(a)):
…     print a[i]

>>> a = [‘spring’, ‘hibernate’, ‘python’]
>>> for i in a:
…     print “저는 %s를 공부하고 있습니다.” % i

저는 spring를 공부하고 있습니다.
저는 hibernate를 공부하고 있습니다.
저는 python를 공부하고 있습니다.

while문

조건문에서는 pass를 쓰고 반복문에서는 continue를 사용하나 봅니다. Java와 마찬가지로 break와 continue를 사용할 수 있습니다. 차이점은 거의 없는 것 같습니다. 조건문 뒤에 : 이걸 붙이는거랑 들여쓰기 하는 거에 익숙해져야 겠습니다.

>>> a = 10
>>> while a:
…     a = a-1
…     print a
…     if a == 5: break

9
8
7
6
5

>>> while a < 10:
…     a = a+1
…     if a%2 == 0: continue
…     print a

1
3
5
7
9

if문

들여쓰기에 주의해야 합니다. 들여쓰기로 블럭을 인식하기 때문에 들여쓰기가 안맞으면 에러가 나는군요.

특이한건 else if를 줄여서 elif 로 사용합니다.

그리고 &&, ||, ! 대신에 and, or, not 이라는 키워드를 사용합니다.

배열, 터플, 문자열 안에 특정 요소가 들어있는지 확인하기 위해 in과 not in을 사용할 수 있습니다.

continue와 똑같이 동작하는 pass라는 키워드가 있습니다.

>>> a = [1, 2, 3, 4, 5]
>>> if a:
…     print “true”

true
>>> if 1 in a:
…     print “true”

true
>>> if 2 in a and 3 in a:
…     print “ture”

ture