Форум сайта python.su
0
Доброго времени суток, вроде шарю неплохо в Python, писал разные программы и с базами данных и тд. без ООП, но с ООП ну вообще туплю конкретно, нифига не могу разобраться))Суть такая:
Необходимо добавить товар с класса Tovar в список класса Sklad1 и вывести список товаров на складе. И так, и так вертел код, оставил как пробовал последний раз. Заранее спасибо. Код:
class Sklad1(object): def __init__(self, name): sklad = [] self.name = name self.sklad = sklad print("Склад построен") print("На складе имеются: ", self.sklad) def to_name(self): print("Склад", self.name, "построен") def i_cart(self, free_cart): free_cart.imp_cart() print(self.sklad) class Tovar(object): tovar = ["Огурцы", "Картошка", " Макароны", "Хлеб"] def __init__(self, tovar): self.cart = tovar[1] def imp_cart(self, sklad): sklad.append(self.cart) skl1 = Sklad1("Пятерочка") free_cart = Tovar("Картошка") free_cart.imp_cart() print(skl1.name) skl1.i_cart(free_cart)
Склад построен На складе имеются: [] Traceback (most recent call last): File "D:\Programist\Project_key_generator\main.py", line 28, in <module> free_cart.imp_cart() TypeError: imp_cart() missing 1 required positional argument: 'sklad' Process finished with exit code 1
Офлайн
44
class Sklad1(object): def __init__(self, name): sklad = [] self.name = name self.sklad = sklad print("Склад построен") print("На складе имеются: ", self.sklad) def to_name(self): print("Склад", self.name, "построен") def i_cart(self, free_cart): free_cart.imp_cart() print(self.sklad) class Tovar(object): tovar = ["Огурцы", "Картошка", " Макароны", "Хлеб"] #зачем в каждом экземпляре этот список def __init__(self, tovar):#если вы передаете его при его создании self.cart = tovar[1] def imp_cart(self, sklad): sklad.append(self.cart) #зачем эта переменная доступная тоько внутри функции skl1 = Sklad1("Пятерочка") free_cart = Tovar("Картошка") free_cart.imp_cart() print(skl1.name) skl1.i_cart(free_cart)
и вставьте ссылку на его url Офлайн
857
JekaPythonshikПо коду не скажешь, что ты шаришь в основах хотя бы. Так что ты не только за ООП рано взялся (а это направление не для новичков и не для середнячков), но и даже не вышел на средний уровень в более простых направлениях.
Доброго времени суток, вроде шарю неплохо в Python, писал разные программы и с базами данных и тд. без ООП, но с ООП ну вообще туплю конкретно, нифига не могу разобраться))
JekaPythonshikНичего ты не писал. То, что ты писал, не работало, фуфел. Если бы ты писал, ты бы такую ахинею, как в посте своём выше, не накатал бы даже близко.
писал разные программы и с базами данных и тд.
Офлайн
0
py.user.nextфига какие тут неадекваты бывают)))
Офлайн
0
py.user.nextфига какие тут неадекваты бывают)))
Офлайн
0
py.user.nextну раз такой деятель, подсказал бы как надо, а не понты колотить свои))
Офлайн
857
JekaPythonshikНадо изучать основы процедурной парадигмы программирования. Иначе ты не понимаешь, что такое функция, как её делать, что такое аргументы функции (формальные и фактические), что такое возвращаемое значение функции, что такое сигнатура функции. Этого всего ты не знаешь, а это основы уровня школоты.
подсказал бы как надо
Отредактировано py.user.next (Июнь 6, 2022 09:58:32)
Офлайн
568
JekaPythonshikи ты не смог распарсить вот это сообщение, риали?
вроде шарю неплохо в Python, писал разные программы и с базами данных и тд. без ООП
TypeError: imp_cart() missing 1 required positional argument: ‘sklad’какой смешной пупсик
Жека Козолуп, не ты ли это к нам опять?
Офлайн
5
Оно?
class Sklad1(object): def __init__(self, name): sklad = [] self.name = name self.sklad = sklad print("Склад построен") def to_name(self): print("Склад", self.name, "построен") def i_cart(self, cart): for i in cart: self.sklad.append(i) def info(self): print('Имя склада:', self.name) print("На складе имеются: ", self.sklad) class Tovar(object): def __init__(self, *product): self.cart = product def info(self): print('Товары в корзине:', self.cart) skl1 = Sklad1("Пятерочка") free_cart = Tovar("Огурцы", "Картошка", "Макароны", "Хлеб") free_cart.info() skl1.i_cart(free_cart.cart) skl1.info() cart_num_2 = Tovar("Пиво", "Водка") skl1.i_cart(cart_num_2.cart) skl1.info()
Отредактировано Palrom (Июнь 6, 2022 21:17:24)
Офлайн
44
class Sklad1(object): #что наследуем? def __init__(self, name): sklad = [] #если это убрать self.name = name self.sklad = sklad #а это заменить на self.sklad = [] то мне кажется нечего в работе кода не поменяется print("Склад построен") def to_name(self): print("Склад", self.name, "построен") def i_cart(self, cart): for i in cart: #эээ тут нет уверености ... короче почему бы просто не сделать self.sklad + cart self.sklad.append(i) def info(self): #наверное лучше переопердилить некоторые магические методы а не делать лишних print('Имя склада:', self.name) print("На складе имеются: ", self.sklad) class Tovar(object): #что наследуем? def __init__(self, *product): self.cart = product def info(self): print('Товары в корзине:', self.cart) skl1 = Sklad1("Пятерочка") free_cart = Tovar("Огурцы", "Картошка", "Макароны", "Хлеб") free_cart.info() skl1.i_cart(free_cart.cart) skl1.info() cart_num_2 = Tovar("Пиво", "Водка") skl1.i_cart(cart_num_2.cart) skl1.info()
и вставьте ссылку на его url Офлайн