Найти - Пользователи
Полная версия: ООП беда
Начало » Python для новичков » ООП беда
1 2
JekaPythonshik
Доброго времени суток, вроде шарю неплохо в 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
AD0DE412
 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)
вы имеете предстовление о таком понятии как пространство имен?
py.user.next
JekaPythonshik
Доброго времени суток, вроде шарю неплохо в Python, писал разные программы и с базами данных и тд. без ООП, но с ООП ну вообще туплю конкретно, нифига не могу разобраться))
По коду не скажешь, что ты шаришь в основах хотя бы. Так что ты не только за ООП рано взялся (а это направление не для новичков и не для середнячков), но и даже не вышел на средний уровень в более простых направлениях.

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

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

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

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

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

Программирование это не такая хуйня, что ты заскочил быстро в поезд и всем сказки рассказываешь, как ты там базы данных программировал. В программировании либо ты умеешь и у тебя программы есть, которые работают, либо ты не умеешь и у тебя вполне ожидаемо просто нет нихуя. Так что свои сказки оставь каким-нибудь дурам, которые сидят и не очень точно знают, где находится Enter на клавиатуре.
FishHook
JekaPythonshik
вроде шарю неплохо в Python, писал разные программы и с базами данных и тд. без ООП
и ты не смог распарсить вот это сообщение, риали?
TypeError: imp_cart() missing 1 required positional argument: ‘sklad’
какой смешной пупсик Жека Козолуп, не ты ли это к нам опять?
Palrom
Оно?
 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()
AD0DE412
 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()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB