我有這個代碼:
class Junior_devs:
entry_list = []
raise_amount = 1.04
sum = 0
def __init__(self, first, last, pay, email):
self.first = first
self.last = last
self.pay = pay
self.email = email
def apply_raise(self):
if self in Junior_devs.entry_list:
self.pay = (int(self.pay) * Junior_devs.raise_amount)
else:
self.pay = (int(self.pay) * Senior_devs.raise_amount)
@classmethod
def add_employee(cls, string):
first, last, pay, email = string.split(" ")
emp = cls(first, last, int(pay), email)
cls.entry_list.append(emp)
return emp
@classmethod
def sumOfpay(cls):
sum = 0
for x in cls.entry_list:
dicti = x.__dict__
sum = int(dicti["pay"])
return sum
def change_level(self):
if self in Junior_devs.entry_list:
Junior_devs.entry_list.remove(self)
Senior_devs.entry_list.append(self)
elif self in Senior_devs.entry_list:
Senior_devs.entry_list.remove(self)
Junior_devs.entry_list.append(self)
class Senior_devs(Junior_devs):
entry_list = []
raise_amount = 1.10
emp1 = Junior_devs.add_employee("imri peretz 20000 [email protected]")
emp3 = Junior_devs.add_employee("tray belfort 10000 [email protected]")
emp2 = Senior_devs.add_employee("Test User 1000 [email protected]")
emp4 = Senior_devs.add_employee("jordan belfort 2000 [email protected]")
print("Juniors: ")
for x in Junior_devs.entry_list:
print(x.__dict__)
print("Seniors: ")
for x in Senior_devs.entry_list:
print(x.__dict__)
print("---------------")
for x in Junior_devs.entry_list:
Junior_devs.change_level(x)
print("Juniors: ")
for x in Junior_devs.entry_list:
print(x.__dict__)
print("Seniors: ")
for x in Senior_devs.entry_list:
print(x.__dict__)
當我使用 change_level 函式將實體從初級切換到高級時,它們都會切換,但總是有 1 個實體會切換。使用功能前:
Juniors:
{'first': 'imri', 'last': 'peretz', 'pay': 20000, 'email': '[email protected]'}
{'first': 'tray', 'last': 'belfort', 'pay': 10000, 'email': '[email protected]'}
Seniors:
{'first': 'Test', 'last': 'User', 'pay': 1000, 'email': '[email protected]'}
{'first': 'jordan', 'last': 'belfort', 'pay': 2000, 'email': '[email protected]'}
使用后:
Juniors:
{'first': 'tray', 'last': 'belfort', 'pay': 10000, 'email': '[email protected]'}
Seniors:
{'first': 'Test', 'last': 'User', 'pay': 1000, 'email': '[email protected]'}
{'first': 'jordan', 'last': 'belfort', 'pay': 2000, 'email': '[email protected]'}
{'first': 'imri', 'last': 'peretz', 'pay': 20000, 'email': '[email protected]'}
大三的最后一審也應該轉移到大四。這就是我遇到的問題,因為我回圈遍歷類的條目串列的方式應該回圈遍歷整個串列,但我找不到為什么它停止在最后一個元素的原因。希望對此有所幫助。
uj5u.com熱心網友回復:
remove()您在迭代串列上運行的所有問題。
當您從串列中洗掉元素時,下一個元素將移動到其位置,稍后for-loop 會跳過該元素。如果您有更多元素,那么它將跳過所有“偶數”元素(第二、第四、第六、第八等)
您應該首先將所有元素附加Senior到Junion.
或者您應該處理此串列的副本
for x in Junior_devs.entry_list.copy(): # <-- work on copy of list
Junior_devs.change_level(x)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/464522.html
標籤:Python python-3.x 班级 搜索
