Я написал очень похожий код, единственное отличие которого заключается в перечисляемых именах объектов. Следовательно, я хотел бы перебирать имена объектов. Возможно ли это в Python?
Или, может быть, есть лучший способ, о котором я не думал, для работы с несколькими объектами, имена которых перечисляются.
Более подробная информация представлена в комментарии в MWE.
Это текущий результат.
[1, 2, 3, 4, 5, 6, 7, 8, 9]
UnionSet(set1=UnionSet(set1=TangiSet(elems=[1, 2, 3]), set2=TangiSet(elems=[4, 5, 6])), set2=TangiSet(elems=[7, 8, 9]))
from dataclasses import dataclass
@dataclass(frozen=True)
class FinSet: "A finite set."
@dataclass(frozen=True)
class TangiSet(FinSet):
"A tangible set."
elems: list
def list_elems(self):
return sorted(self.elems)
@dataclass(frozen=True)
class UnionSet(FinSet):
"A union of finite sets"
set1: FinSet
set2: FinSet
def list_elems(self):
val = []
# These two code blocks are extremely similar.
# The only difference is that I replaced the object name
# "set1" with "set2" in some places.
# Is there a way to loop over object names when they are numbered?
if isinstance(self.set1, TangiSet):
val.extend(self.set1.list_elems())
elif isinstance(self.set1, UnionSet):
assert isinstance(self.set1.set1, UnionSet | FinSet)
assert isinstance(self.set1.set2, UnionSet | FinSet)
val.extend(self.set1.set1.list_elems())
val.extend(self.set1.set2.list_elems())
if isinstance(self.set2, TangiSet):
val.extend(self.set2.list_elems())
elif isinstance(self.set2, UnionSet):
assert isinstance(self.set2.set1, UnionSet | FinSet)
assert isinstance(self.set2.set2, UnionSet | FinSet)
val.extend(self.set2.set1.list_elems())
val.extend(self.set2.set2.list_elems())
return sorted(val)
def main():
P = TangiSet([1, 2, 3])
Q = TangiSet([4, 5, 6])
R = TangiSet([7, 8, 9])
S = UnionSet(P, Q)
T = UnionSet(S, R)
print(T.list_elems())
print(T)
if __name__ == "__main__": main()
Можно ли перебирать перечисляемые имена объектов в Python? Или, может быть, есть лучший способ? ⇐ Python
Программы на Python
1778994918
Anonymous
Я написал очень похожий код, единственное отличие которого заключается в перечисляемых именах объектов. Следовательно, я хотел бы перебирать имена объектов. Возможно ли это в Python?
Или, может быть, есть лучший способ, о котором я не думал, для работы с несколькими объектами, имена которых перечисляются.
Более подробная информация представлена в комментарии в MWE.
Это текущий результат.
[1, 2, 3, 4, 5, 6, 7, 8, 9]
UnionSet(set1=UnionSet(set1=TangiSet(elems=[1, 2, 3]), set2=TangiSet(elems=[4, 5, 6])), set2=TangiSet(elems=[7, 8, 9]))
from dataclasses import dataclass
@dataclass(frozen=True)
class FinSet: "A finite set."
@dataclass(frozen=True)
class TangiSet(FinSet):
"A tangible set."
elems: list
def list_elems(self):
return sorted(self.elems)
@dataclass(frozen=True)
class UnionSet(FinSet):
"A union of finite sets"
set1: FinSet
set2: FinSet
def list_elems(self):
val = []
# These two code blocks are extremely similar.
# The only difference is that I replaced the object name
# "set1" with "set2" in some places.
# Is there a way to loop over object names when they are numbered?
if isinstance(self.set1, TangiSet):
val.extend(self.set1.list_elems())
elif isinstance(self.set1, UnionSet):
assert isinstance(self.set1.set1, UnionSet | FinSet)
assert isinstance(self.set1.set2, UnionSet | FinSet)
val.extend(self.set1.set1.list_elems())
val.extend(self.set1.set2.list_elems())
if isinstance(self.set2, TangiSet):
val.extend(self.set2.list_elems())
elif isinstance(self.set2, UnionSet):
assert isinstance(self.set2.set1, UnionSet | FinSet)
assert isinstance(self.set2.set2, UnionSet | FinSet)
val.extend(self.set2.set1.list_elems())
val.extend(self.set2.set2.list_elems())
return sorted(val)
def main():
P = TangiSet([1, 2, 3])
Q = TangiSet([4, 5, 6])
R = TangiSet([7, 8, 9])
S = UnionSet(P, Q)
T = UnionSet(S, R)
print(T.list_elems())
print(T)
if __name__ == "__main__": main()
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия