Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 5, 2022 17:13:02

JekaPythonshik
Зарегистрирован: 2022-04-02
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

ООП беда

Доброго времени суток, вроде шарю неплохо в 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

Офлайн

#2 Июнь 5, 2022 18:26:00

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

ООП беда

 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)
вы имеете предстовление о таком понятии как пространство имен?



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Офлайн

#3 Июнь 5, 2022 21:41:25

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10022
Репутация: +  857  -
Профиль   Отправить e-mail  

ООП беда

JekaPythonshik
Доброго времени суток, вроде шарю неплохо в Python, писал разные программы и с базами данных и тд. без ООП, но с ООП ну вообще туплю конкретно, нифига не могу разобраться))
По коду не скажешь, что ты шаришь в основах хотя бы. Так что ты не только за ООП рано взялся (а это направление не для новичков и не для середнячков), но и даже не вышел на средний уровень в более простых направлениях.

JekaPythonshik
писал разные программы и с базами данных и тд.
Ничего ты не писал. То, что ты писал, не работало, фуфел. Если бы ты писал, ты бы такую ахинею, как в посте своём выше, не накатал бы даже близко.

Так что пересмотри сначала своё самомнение. Скажи себе, что “пора признать, что я ничего не умею вообще” и начинай учиться, если тебе это надо в конечном счёте.



Офлайн

#4 Июнь 5, 2022 21:46:09

JekaPythonshik
Зарегистрирован: 2022-04-02
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

ООП беда

py.user.next
фига какие тут неадекваты бывают)))

Офлайн

#5 Июнь 5, 2022 21:46:13

JekaPythonshik
Зарегистрирован: 2022-04-02
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

ООП беда

py.user.next
фига какие тут неадекваты бывают)))

Офлайн

#6 Июнь 5, 2022 21:49:52

JekaPythonshik
Зарегистрирован: 2022-04-02
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

ООП беда

py.user.next
ну раз такой деятель, подсказал бы как надо, а не понты колотить свои))

Офлайн

#7 Июнь 6, 2022 09:55:20

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10022
Репутация: +  857  -
Профиль   Отправить e-mail  

ООП беда

JekaPythonshik
подсказал бы как надо
Надо изучать основы процедурной парадигмы программирования. Иначе ты не понимаешь, что такое функция, как её делать, что такое аргументы функции (формальные и фактические), что такое возвращаемое значение функции, что такое сигнатура функции. Этого всего ты не знаешь, а это основы уровня школоты.

Как я понял, что ты нихера не писал? Чтобы что-то написать вменяемое, нужно хотя бы функции знать, просто даже без структурирования этих функций в иерархию. Это вот программки уровня 80-х годов, которые работали с базами данных, как ты говоришь, и так далее.

И только когды ты уже знаешь это всё - то, что я перечислил выше, то, что ты прочитал вообще впервые тут, - тогда ты и можешь дополнить свой репертуар объектно-ориентированной парадигмой программирования, потому что она не заменяет более простые парадигмы, которые применялись до неё, а дополняет их. То есть ты к ним добавляешь ООП, а не ООП используешь вместо них. Понял?

Если ты не умеешь рисовать карандашом людей и животных, то с чего ты взял, что, купив новые краски какие-нибудь там навороченные и палитру, ты автоматически станешь уметь рисовать людей и животных? Ты как не умел, так и не будешь уметь ни-ху-я, потому что ты даже простым карандашом не научился этого делать. Вот так это всё устроено.

Программирование это не такая хуйня, что ты заскочил быстро в поезд и всем сказки рассказываешь, как ты там базы данных программировал. В программировании либо ты умеешь и у тебя программы есть, которые работают, либо ты не умеешь и у тебя вполне ожидаемо просто нет нихуя. Так что свои сказки оставь каким-нибудь дурам, которые сидят и не очень точно знают, где находится Enter на клавиатуре.



Отредактировано py.user.next (Июнь 6, 2022 09:58:32)

Офлайн

#8 Июнь 6, 2022 10:05:00

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

ООП беда

JekaPythonshik
вроде шарю неплохо в Python, писал разные программы и с базами данных и тд. без ООП
и ты не смог распарсить вот это сообщение, риали?
TypeError: imp_cart() missing 1 required positional argument: ‘sklad’
какой смешной пупсик Жека Козолуп, не ты ли это к нам опять?



Офлайн

#9 Июнь 6, 2022 20:42:58

Palrom
Зарегистрирован: 2022-04-21
Сообщения: 82
Репутация: +  5  -
Профиль   Отправить e-mail  

ООП беда

Оно?

 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)

Офлайн

#10 Июнь 6, 2022 21:59:48

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

ООП беда

 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()



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version