Форум сайта python.su
0
Здравствуйте, я новичок в программировании.
Недавно начал изучать ООП.
Объясните, пожалуйста, зачем нужен аргумент self при создании метода?
Я написал простой код ( с self и без него)
-
[s][/s] class Person(): def Hello(self): print ('Hello') p1 = Person() p1.Hello() _______________ class Person(): def Hello(): print ('Hello') p1 = Person p1.Hello()
Отредактировано HLpmpls (Июль 28, 2021 13:27:58)
Офлайн
568
HLpmpls
Классы сами по себе бессмысленны. Класс - это новый тип данных. Тип не имеет значения если вы не создаете объектов. В вашем коде вы создаете объект p1, но этот объект тоже довольно бесполезен, потому что он не содержит внутренней структуры. Другими словами, ООП в вашем примере не работает никак и ваш код не лучше простого объявления функций вне всяких классов
def Hello(): print ('Hello') Hello()
Отредактировано FishHook (Июль 28, 2021 13:46:59)
Офлайн
0
FishHook
HLpmplsКлассы сами по себе бессмысленны. Класс - это новый тип данных. Тип не имеет значения если вы не создаете объектов. В вашем коде вы создаете объект p1, но этот объект тоже довольно бесполезен, потому что он не содержит внутренней структуры. Другими словами, ООП в вашем примере не работает никак и ваш код не лучше простого объявления функций вне всяких классов
Отредактировано HLpmpls (Июль 28, 2021 14:08:08)
Офлайн
568
HLpmplsАга!
То есть, допустим, я должен создать класс “прямоугольник”, создать метод для вычисления его площади, сохранить в атрибутах его длину, ширину и т.д?
class Square: # your code here class Circle: # your code here shapes = [Square(10, 20), Circle(50), Circle(56), Square(15, 17)] for shape in shapes: print shape.getArea()
Офлайн
857
HLpmplsООП без OOA и OOD лучше не изучать. Потому что сначала у тебя есть задача. Для задачи проводится OOA (объектно-ориентированный анализ), потом результаты OOA передаются в OOD (объектно-ориентированное проектирование, d - design) и обогощаются новыми данными, потом результаты OOD передаются в OOP (объектно-ориентированное программирование) и уже записываются на каком-либо ООП-языке программирования.
Здравствуйте, я новичок в программировании.
Недавно начал изучать ООП.
Офлайн
0
py.user.nextСпасибо за совет. Почти во все книжках для начинающих нет таких тем (ООА и ООD). Обычно, сразу после функций начинают рассказывать про классы и ООП.
Офлайн
568
HLpmplsВот и читайте книжку, не стоит все подряд высказывания принимать за откровение.
Обычно, сразу после функций начинают рассказывать про классы и ООП.
Офлайн
857
HLpmplsТы ничего не напишешь в ООП. Почему ты не напишешь? Потому что ты не сможешь построить иерархию классов.
Обычно, сразу после функций начинают рассказывать про классы и ООП.
>>> object <class 'object'> >>>
Отредактировано py.user.next (Июль 29, 2021 13:08:59)
Офлайн
568
py.user.next
Ну и что ты предлагаешь то? Давай закроем нафиг “Питон для новичков”. Как-то ты камрад неконструктивно и не по делу умничаешь. Человек читает учебник. Видит непонятное и спрашивает. Его вопрос не простирается за пределы учебника, ему не нужны ни иерархии классов, ни анализ и ни проектирование. Ему надо понять, что значит класс, метод и экземпляр. Чо ты его грузишь то?
HLpmpls
Не слушайте. Читайте учебник, выполняйте задания, всё будет своим чередом.
Офлайн
857
FishHookНачать с определений. Он не знает, что такое ООП.
Ну и что ты предлагаешь то?
FishHookОно для новичков, но не для дурачков.
Давай закроем нафиг “Питон для новичков”.
FishHookБез иерархии классов нет ООП. Ты вообще понимаешь, что когда ты просто класс сделал (да даже сто классов ты сделал), это не ООП, это программирование с абстрактными типами данных просто? В ООП все объекты в программе - родственники. Ближайшие родственники или дальние. И за счёт этой родственности происходит перенос общих признаков, которые не нужно каждый раз заново реализовывать. То есть ты громадные конструкции можешь очень быстро воспроизводить. Вот почему ООП считается подходящей парадигмой для разработки огромных программ (больше 100000 строк). Там просто можно ворочать огромными кусками очень быстро, перенастраивать их с одного на другое.
ему не нужны ни иерархии классов, ни анализ и ни проектирование
Отредактировано py.user.next (Июль 29, 2021 22:44:00)
Офлайн