Проблема
Я работаю с объектами класса в одном связанном списке. Было бы неплохо иметь метод, который возвращает указанные переменные c. Возможно ли это?
Пока у меня есть метод в классе Linked List:
Работает
class SLinkedList:
def __init__(self):
self.headval = None
def getListZ(self,):
val = self.headval
arr = []
while val is not None:
arr.append(val.val.Z)
val = val.nextval
return arr
Хочет:
class SLinkedList:
def __init__(self):
self.headval = None
def getListZ(self,var):
item = self.headval
arr = []
while val is not None:
arr.append(item.val.var)
item = item.nextval
return arr
Вопросы
- Как я могу написать метод, который возвращает список определенных переменных из объектов класса? Допустим, я хочу вернуть список всех сопротивлений. Как мне это сделать?
Обходной путь
Я могу получить список для любой требуемой переменной (в примере, список вызывается из другого класса):
vals1 = [item.val.val1 for item in self.list]
Итерация возможна с помощью следующего метода:
def __iter__(self):
node = self.headval
while node:
yield node
node = node.nextval
Однако
Я все равно буду возможность динамически печатать несколько переменных из моего объекта в связанном списке. Как я могу сделать это переменной вместо жесткого кодирования, как я сделал ниже?
Код
Сценарий
class Node:
def __init__(self, val=None):
self.val = val
self.nextval = None
class SLinkedList:
def __init__(self):
self.headval = None
def __iter__(self):
node = self.headval
while node:
yield node
node = node.nextval
# Function to add newnode
def AtEnd(self, newdata):
NewNode = Node(newdata)
if self.headval is None:
self.headval = NewNode
return
laste = self.headval
while(laste.nextval):
laste = laste.nextval
laste.nextval=NewNode
# Print the linked list
def listprint(self,):
printval = self.headval
while printval is not None:
try:
print (printval.val.nodes,printval.val.Ctype,printval.val.Z,sep='\t')
except:
print (printval.val.nodes,printval.val.Ctype,sep='\t')
printval = printval.nextval