class Test:
TheFlag = True
StartNodeQuery = {1, 2, 3, 4, 5}
def parsa(self):
while self.TheFlag:
SNQ = self.StartNodeQuery
self.iterator(SNQ)
def iterator(self, CurrentNodeQuery):
#it prints {1, 2, 3, 4, 5}
print(CurrentNodeQuery)
if len(CurrentNodeQuery) < 100:
b = len(CurrentNodeQuery) * 2
c = len(CurrentNodeQuery) * 3
self.StartNodeQuery.update({b, c})
# it prints {1, 2, 3, 4, 5, 10, 15}
print(CurrentNodeQuery)
else:
self.TheFlag = False
assert 0
obj = Test()
obj.parsa()
как вы можете видеть, я намеренно завершил программу с утверждением 0.
Основная проблема:
Перед завершением функции переданные ей параметры изменяются!
как видите
StartNodeQuery = {1, 2, 3, 4, 5} и
SNQ = self.StartNodeQuery
так почему, когда я изменяю размер self.StartNodeQuery внутри функции до ее завершения, CurrentNodeQuery, которая является другой переменной с теми же значениями, что и self.StartNodeQuery (или SNQ), также изменяется, даже если мы не передать новый self.StartNodeQuery в CurrentNodeQuery?
Я надеюсь, вы понимаете мою проблему, если у вас есть решение, пожалуйста, помогите парню