Являются ли эти два способа вызова класса эквивалентными в Python?

#python #class

#питон #класс

Вопрос:

У меня есть следующая настройка класса:

 SUITS = ["D", "C", "H", "S"]

class CardDeck:
    #creates a pack of cards (no jokers)
    def __init__(self):
        self.cards = []
        for s in SUITS:
            for x in range(1, 14):
                self.cards.append(s   str(x))

    #sets as as high if True
    def aceHigh(self, bool):
        if bool == True:
            for s in SUITS:
                self.cards.remove(s   "1")
                self.cards.insert(12, s   "14")
        elif bool == False:
            print('Ace not high')
 

Когда я затем делаю следующее, я, кажется, получаю те же результаты. Всегда ли эти два способа вызова / доступа к методам / классам эквивалентны? Является ли один из них лучше другого по какой-либо причине (в частности, прав ли я, считая первый подход рекурсивным)? Спасибо

 x = CardDeck()
y = CardDeck()

CardDeck.aceHigh(x, True)

y.aceHigh(True)

print(x.cards)
print(y.cards)
 

Комментарии:

1. Нет, первый подход не имеет ничего общего с рекурсией. Второй подход предпочтительнее, поскольку сразу видно, с каким CardDeck экземпляром вы на самом деле имеете дело.

2. Нет, не делайте этого : CardDeck.aceHigh(x, True) . Это не имеет ничего общего с рекурсией.