이전 글의 목차가 너무 길어져서 글을 하나 더쓰려고 한다

map

def func(num) :
  return num+1

nums = [1,2,3,4,5]

lst = list(map(func,nums))
print(lst)        # [2,3,4,5,6]

Javascript의 map처럼 하나씩 적용

클래스

class Puppy :
  pass

pass는 안에 아무것도 없을 때 그냥 넘어가라는 명시적인 표현이다

self (인스턴스 변수)

class Puppy :
  def setName(self,_name) :
    self.name = _name

myPet = Puppy()
myPet.setName("꽁별이")
print(myPet.name)        # 꽁별이

self 는 객체 인스턴스를 의미한다

생성자 함수

class Puppy :
  def __init__(self,_age,name='댕댕이') :
    self.age = _age

myPet = Puppy(5)
print("%s, %d세" %(myPet.name,myPet.age))    # 댕댕이, 5세

클래스 변수

class Chiken :
  count = 0
  def __init__(self,_brand=:'No brand') :
    self.brand = _brand
    Chiken.count += 1

order1 = Chiken('굽네')
order2 = Chiken('교촌')

print(Chiken.count)        # 2
print(order1.count)        # 2

정적 메서드

class Chiken :
  count = 0
  sentence = "Chiken is love"

  def __init__(self,_brand=:'No brand') :
    self.brand = _brand
    Chiken.count += 1

  @staticmethod
  def whyChiken(cls) :
    return cls.sentence

print(Chiken.whyChiken())    # Chiken is love

인스턴스메서드가 인스턴스변수를 self로 받는것처럼, 정적메서드는 cls로 받는다 (관례)

상속

class 부모클래스 :
  ...
class 자식클래스(부모클래스) :
  ...

부모클래스의 생성자함수도 자식클래스의 생성자함수로 오버라이딩 한다

다중상속

class 부모1클래스 :
  pass
class 부모2클래스 :
  pass
class 자식클래스(부모1클래스, 부모2클래스) :
  ...

부모 클래스들에 같은 메서드가 있을경우, 먼저 상속한 부모1클래스의 메서드가 상속된다

import(Module)

testModule.py

def threeTimes(value) :
  return value*3

def tenTimes(value) :
  return value*10

main.py

import testModule
print(testModule.threeTiems(10))  # 30

from testModule import tenTimes
print(tenTiems(10))        # 100

에러

  • SyntaxError : 문법 에러
  • IndentationError : 들여쓰기 에러
  • ZeroDivisionError : 0으로 나눔
try : 
  raise ZerorDivisionError    # 오류 발생
except ZeroDivisionError as e :
  print(e)
else :
  print("Success!")