В настоящее время я нахожусь на онлайн-курсе sh по python и обнаружил сбивающий с толку код.
Как показано ниже, это код, который предназначен для определения количества рубашек поло из хлопка.
class Clothing:
stock={ 'name': [],'material' :[], 'amount':[]}
def __init__(self,name):
material = ""
self.name = name
def add_item(self, name, material, amount):
Clothing.stock['name'].append(self.name)
Clothing.stock['material'].append(self.material)
Clothing.stock['amount'].append(amount)
def Stock_by_Material(self, material):
count=0
n=0
for item in Clothing.stock['material']:
if item == material:
count += Clothing.stock['amount'][n]
n+=1
return count
class shirt(Clothing):
material="Cotton"
class pants(Clothing):
material="Cotton"
polo = shirt("Polo")
sweatpants = pants("Sweatpants")
polo.add_item(polo.name, polo.material, 4)
sweatpants.add_item(sweatpants.name, sweatpants.material, 6)
current_stock = polo.Stock_by_Material("Cotton")
print(current_stock)
очевидно, что количество рубашек поло из хлопка равно 4, но все же код дает 10, сумму количества хлопковых рубашек поло и спортивных штанов, в качестве ответа (который на самом деле считается правильным).
Мой вопрос: не должен ли метод polo.Stock_by_Material только повторять элементы в словаре в экземпляре «поло» вместо «поло» и «спортивные штаны»? Я имею в виду, что «поло» и «спортивные штаны» даже не относятся к одному и тому же классу, так почему же метод polo.Stock_by_Material будет подсчитывать количество обоих классов?
Пожалуйста, простите меня, если я сделал здесь несколько глупых ошибок. У меня всего 1 неделя в python без опыта программирования. Большое спасибо!