Python robi to:
t = (1, 2)
x, y = t
# x = 1
# y = 2
Jak mogę wdrożyć moją klasę, aby to zrobić
class myClass():
def __init__(self, a, b):
self.a = a
self.b = b
mc = myClass(1, 2)
x, y = mc
# x = 1
# y = 2
Czy istnieje magiczna funkcja, którą mógłbym zaimplementować, aby to osiągnąć?
2 odpowiedzi
Musisz sprawić, by Twoja klasa była iterowalna. Zrób to, dodając do niego metodę __iter__
.
class myClass():
def __init__(self, a, b):
self.a = a
self.b = b
def __iter__(self):
return iter([self.a, self.b])
mc = myClass(1, 2)
x, y = mc
print(x, y)
Wynik:
1 2
Jeśli Twoja klasa nie robi zbyt wiele, możesz skorzystać z nazwana krotka:
from collections import namedtuple
MyClass = namedtuple('MyClass', 'a b')
mc = MyClass(1, 2)
print(mc.a, mc.b) # -> 1 2
x, y = mc
print(x, y) # -> 1 2
Przy okazji, uwaga dotycząca stylu: nazwy klas powinny mieć postać UpperCamelCase.
Podobne pytania
Nowe pytania
python
Python to wielozadaniowy, wielozadaniowy język programowania dynamicznie typowany. Został zaprojektowany tak, aby był szybki do nauczenia się, zrozumienia i użycia oraz wymuszania czystej i jednolitej składni. Należy pamiętać, że Python 2 oficjalnie nie jest obsługiwany od 01-01-2020. Mimo to, w przypadku pytań Pythona specyficznych dla wersji, dodaj znacznik [python-2.7] lub [python-3.x]. Korzystając z wariantu Pythona (np. Jython, PyPy) lub biblioteki (np. Pandas i NumPy), należy umieścić go w tagach.