은행에서 "계정"을 추상화하고 싶다고 가정 해 봅시다. 다음 function
은 파이썬 에서 객체를 사용하는 한 가지 방법입니다 .
def account():
"""Return a dispatch dictionary representing a bank account.
>>> a = account()
>>> a['deposit'](100)
100
>>> a['withdraw'](90)
10
>>> a['withdraw'](90)
'Insufficient funds'
>>> a['balance']
10
"""
def withdraw(amount):
if amount > dispatch['balance']:
return 'Insufficient funds'
dispatch['balance'] -= amount
return dispatch['balance']
def deposit(amount):
dispatch['balance'] += amount
return dispatch['balance']
dispatch = {'balance': 0,
'withdraw': withdraw,
'deposit': deposit}
return dispatch
다음은 타입 추상화를 사용하는 또 다른 방법입니다 (예 class
: Python의 키워드).
class Account(object):
"""A bank account has a balance and an account holder.
>>> a = Account('John')
>>> a.deposit(100)
100
>>> a.withdraw(90)
10
>>> a.withdraw(90)
'Insufficient funds'
>>> a.balance
10
"""
def __init__(self, account_holder):
self.balance = 0
self.holder = account_holder
def deposit(self, amount):
"""Add amount to balance."""
self.balance = self.balance + amount
return self.balance
def withdraw(self, amount):
"""Subtract amount from balance if funds are available."""
if amount > self.balance:
return 'Insufficient funds'
self.balance = self.balance - amount
return self.balance
선생님은 class
키워드 를 소개하고 다음과 같은 요점을 보여줌으로써 "객체 지향 프로그래밍"이라는 주제를 시작했습니다 .
객체 지향 프로그래밍
모듈 식 프로그램을 구성하는 방법 :
- 추상화 장벽
- 메시지 전달
- 정보와 관련 행동 묶기
위의 정의를 만족시키기 위해 첫 번째 방법으로 충분하다고 생각하십니까? 그렇다면 왜 class
객체 지향 프로그래밍을하기 위해 키워드가 필요한가?
foo.bar()
일반적으로와 동일하며 foo['bar']()
드문 경우에 후자의 구문이 실제로 유용합니다.
class
비슷한 최적화를 수행합니다.