Python Class 생성자 함수

마법사 슬기·2021년 11월 15일
0

파이썬

목록 보기
6/7
post-thumbnail

생성자

객체는 init이라는 특별한 멤버 함수를 가지고 있습니다.
이 멤버 함수는 생성자(Constructor) 라고 불립니다.
객체가 생성될 때 생성자는 자동으로 호출됩니다.

FACES = list(range(2, 11)) +
['Jack', 'Queen', 'King', 'Ace']
SUITS = ['Clubs', 'Diamonds', 'Hearts', 'Spades']

Class Card(object):
	"""A Blackjack card."""
	def __init__(self, face, suit):
		assert face in FACES and suit in SUITS  
		self.face = face
		self.suit = suit

문자열 변환

card_string()함수를 사용하지 않고도 카드 내용을 문자열로 바꾸는 방법이 있습니다.
str(card) 는 card의 특별한 멤버 함수 str 를 호출합니다.

class Card(object):
	"""A Blackjack card."""
	"""Already defined __init__ and value methods"""
	def __str__(self):  
		article = "a "
		if self.face in [8, "Ace"]:
        		article = "an "
		return (article + str(self.face) + " of" + self.suit)

그러면


class Card(object):
	"""A Blackjack card."""
    """Already defined  __init__ and value methods"""
    def string(self):
    	article = "a "
        if self.face in [8, "Ace"]:
        	article = "an "
           	return (article + str(self.face) +  " of " + self.suit)


for card in hand:
	print(card.string(), "has value", card.value())
    
    # card.string() 대신에 간편하게 card를 쓸 수 있다.
    
for card in hand:
	print(card, "has value", card.value())

부등식

객체에서 비교 연산자 (==, !=, < 등)를 사용하면 예상과 다른 결과가 나올 수 있습니다.
사용자의 생각대로 비교 연산자를 통해 객체를 비교하기 위해서는 다음과 같이 정의를 해야 합니다.

class Card(object):
    """A Blackjack card."""
    """Already defined other methods"""
    def __eq__(self, rhs):
        return (self.face == rhs.face and self.suit == rhs.suit)
    def __ne__(self, rhs):
        return not self == rhs
profile
주니어 웹개발자의 성장 일지

0개의 댓글