Форум сайта python.su
1
То, что данные в Python объекты - не делает ваш код объектно-ориентированным. Напротив, на языке С можно писать в ООП стиле. Иначе как бы основной интерпретатор CPython, написанный на С понимал и выполнял код, написанный на Python в ООП стиле?
Офлайн
568
RudiumРазумеется, это МЕТОД объекта. Не согласны?
+ не является объектом
class Foo: def __add__(self, other): return 1
Офлайн
24
более того, import, for, with это шорткаты для вызова соответствующих методов обьекта. но это так, возведение в абсолют конечно.
Офлайн
186
> + не является объектом
Совершенно верно. Но только потому что с точки зрения интерпритатора никакого “+” нет, а есть метод __add__ . Например “1” + “1” интерпритатор преобразует в “1”.__add__(“1”) и это выражние полностью соответствует твоим требованиям:
> 2) каждый объект является экземпляром определенного класса;
“1” это экземпляр класса str
>>> type("1") <type 'str'>
>>> str.__mro__ (<type 'str'>, <type 'basestring'>, <type 'object'>)
Офлайн
1
С точки зрения интерпретатора любая программа мультипарадигменная с использованием объектов в качестве данных.
Офлайн
1
FishHookРазумеется на C можно это реализовать. Иначе бы интерпретатор CPython не смог выполнить этот код. Настоящие классы и настоящее ООП реализует Cи, читая обычный текст на языке Python.
Офлайн
1
Даже первые компиляторы C++ состояли из препроцессора, переводившего ООП код в C-код и компилятора C
Офлайн
1
Другое дело что писать каждодневно на С в ООП стиле - извращение.
Офлайн
186
> С точки зрения интерпретатора любая программа мультипарадигменная с использованием объектов в качестве данных.
Обоснуй.
Офлайн
568
Rudium
В конечном итоге всё превращается в машинный код. Даже программа на Си. Даже программа на ассемблере.
Представьте себе, все парадигмы и мультипарадигмы вырождаются в машинный язык.
И что дальше?
Я понять не могу, что вы доказать то хотите? Что на пионе вполне можно писать программы не зная ООП? Да нафиг такие программисты никому не нужны. Это тупость.
Офлайн