2013-04-22 2 views
-1

클래스에 대한 튜토리얼 비디오를 많이 본 후에는이 과제를 이해하는 데 여전히 어려움이 있습니다.파이썬 3의 클래스와 메소드 이해하기

필자는 본질적으로 높은 카드를 사용하는 프로그램을 작성해야하는데, 이는 내가 얼굴을 보게하기 위해 2 장의 카드를 필요로하고, 한 벌은 정장과 순위가있는 승자가되어야 함을 의미합니다.

2-14 순위 (11 = 잭, 12 = 여왕, 13 = 왕, 14 = 에이스)

1-4 인 소송 (클럽, 다이아몬드, 하트, 스페이드)

이게되고 내가 가지고있는 것

class Card: 
     def __init__(self, inRank, inSuit): 
     self.__rank = inRank 
     self.__suit = inSuit 

누군가 나를 올바른 방향으로 안내 할 수 있습니까? 이 일을 시작하는 방법에 대해 공백을 표시합니다.

+0

의사 카드 또는 영어로 두 카드 중 어느 쪽이 더 좋은지 결정하는 방법을 적어 두십시오. 그런 다음이를 파이썬으로 번역하십시오. – Patashu

+0

부수적으로, 들여 쓰기가 올바르지 않습니다 (붙여 넣기에서 실수가 아닌 한). –

답변

1

클래스는, 괜찮습니다. 나는 card 객체를 인수로 취하여 승자를 반환하는 face_off -function을 정의 할 것입니다. 내가 올바르게 이해한다면, 두 카드의 rank 속성을 비교하고 더 높은 카드를 반환하십시오. 그런 다음 if __name__ == '__main__' 블록으로 모든 것을 감 쌉니다.

실제로이 클래스도 필요하지 않지만 카드는 dict 또는 tuple 일 수 있습니다. 그러나 클래스가 필요하면 클래스 대신 rich comparison methods을 정의하여 속성 대신 오브젝트를 비교할 수 있습니다. 파이썬의 내장 함수를 활용하면 faceoff은 단지 max(card_object_one, card_object_two)을 반환 할 수 있습니다. 기본적으로 dicts 및 tuples와 함께 작동합니다.

1

빠른 쪽지. Python mangles class and instance variables의 이름이 밑줄로 시작됩니다. 하나의 밑줄을 사용하는 것이 좋습니다 (아니면 전혀 사용하지 않는 것이 좋습니다).

원래 질문으로 돌아 가기. 다음 단계는 다른 카드 인스턴스를 허용하는 faceoff 메서드를 만드는 것입니다. 이 메서드는 우승 한 카드를 반환하거나 호출자가 승리했는지 여부를 알려주는 부울을 반환 할 수 있습니다. 예를 들어

: 당신은 개체를 비교하기위한 모든 방법을 구현하지 않은 이후로는, 속성에 밑줄을 제거하는 것이지만

def faceoff(self, other): 
    # Compare self against other 
    # ... 

    # if self beats other 
     return True 
    return False