Python 对象 return 列表
Python Object return a list
我有一个 Deck class,我从中创建了一个 deck 对象:
class Deck:
cards = []
deck = Deck()
如何在调用时将套牌对象设为 return 卡片列表?
print(deck)
# or
for card in deck:
# do
无需总是调用 deck.cards?
您可以在 class 中定义 __iter__
Deck
:
class Deck:
def __init__(self):
self.cards = [1, 2, 3]
def __iter__(self):
for i in self.cards:
yield i
deck = Deck()
for card in deck:
print(card)
还有这个打印:
1
2
3
嗯,有办法:
import jsons
class Deck:
cards = ['card_1', 'card_2', 'card_3']
deck = Deck()
dict_temp = jsons.dump(deck)
print(dict_temp['cards'])
=>
['card_1', 'card_2', 'card_3']
除了 __iter__(self):
,您还可以使用 __call__(self):
。对于后者,您必须将括号附加到 deck
,但是,像这样:deck()
.
什么是最好的实际上取决于您的应用程序/代码的上下文。
class Deck:
cards = [1, 2, 3]
def __call__(self):
return self.cards
deck = Deck()
print(deck())
输出:[1, 2, 3]
for card in deck():
print(card)
输出:
1
2
3
我在这里研究了 dunder 方法:Python Dunder Methods。作者写道,使用单独的 class 方法通常更好,因为它们更具体。
也许您可以提供更多背景信息,说明为什么要使用 deck
而不是 deck.cards
。
我有一个 Deck class,我从中创建了一个 deck 对象:
class Deck:
cards = []
deck = Deck()
如何在调用时将套牌对象设为 return 卡片列表?
print(deck)
# or
for card in deck:
# do
无需总是调用 deck.cards?
您可以在 class 中定义 __iter__
Deck
:
class Deck:
def __init__(self):
self.cards = [1, 2, 3]
def __iter__(self):
for i in self.cards:
yield i
deck = Deck()
for card in deck:
print(card)
还有这个打印:
1
2
3
嗯,有办法:
import jsons
class Deck:
cards = ['card_1', 'card_2', 'card_3']
deck = Deck()
dict_temp = jsons.dump(deck)
print(dict_temp['cards'])
=>
['card_1', 'card_2', 'card_3']
除了 __iter__(self):
,您还可以使用 __call__(self):
。对于后者,您必须将括号附加到 deck
,但是,像这样:deck()
.
什么是最好的实际上取决于您的应用程序/代码的上下文。
class Deck:
cards = [1, 2, 3]
def __call__(self):
return self.cards
deck = Deck()
print(deck())
输出:[1, 2, 3]
for card in deck():
print(card)
输出:
1
2
3
我在这里研究了 dunder 方法:Python Dunder Methods。作者写道,使用单独的 class 方法通常更好,因为它们更具体。
也许您可以提供更多背景信息,说明为什么要使用 deck
而不是 deck.cards
。