В чем разница между концепцией ООП в Python и в си-подобных языках? Доброго времени суток. Я знаком с питоном, но при этом я ещё новичок. Мне, как человеку, которой до этого долгое время писал на си-подобных языках (Java) не очень понятно одна вещь, которая связана с разницей между классами и Объектами. В Python, существует класс и соответственно, отдельная сущность как объект ( или виртуальная копия класса). Но при этом, вызывая метод, обязательно нужно передавать self, так как в Питоне метод вызывается именно в классе, а уже благодаря self, этот метод определяет с каким именно экземпляром класса он работает. class Test: def f(self): pass Верно ли утверждение, что в Java все немного иначе? Если конкретнее, то я думал, что объекты в Java имеют свои собственные методы внутри объектов. И при вызове метода он вызывается из самого объекта, а не из класса ( где этот класс определяет с чем именно ему дальше работать)
В общем, концепция ООП в Python и в си-подобных языках, таких как Java, имеет много общих черт, но все же есть некоторые различия.
Одно из основных различий заключается в том, как обращаться к объекту при вызове методов. В Python, как вы правильно отметили, при вызове метода необходимо передавать self, так как метод вызывается в контексте конкретного объекта. Таким образом, методы в Python привязаны к объекту, а не к классу. Например, метод f() из вашего примера будет привязан к конкретному экземпляру класса Test.
В Java ситуация немного иная. В Java методы принадлежат классу, а не объекту. При вызове метода через объект в Java нет необходимости передавать self или другой аналогичный объект, так как метод вызывается непосредственно через объект, который уже имеет доступ к своим методам. Таким образом, объект в Java не хранит свои методы, они определены в классе, и все экземпляры этого класса будут использовать один и тот же код метода.
Таким образом, основное различие заключается в том, что методы в Python привязаны к объекту, а в Java - к классу. В остальном концепция ООП остается примерно одинаковой в обоих языках.
В общем, концепция ООП в Python и в си-подобных языках, таких как Java, имеет много общих черт, но все же есть некоторые различия.
Одно из основных различий заключается в том, как обращаться к объекту при вызове методов. В Python, как вы правильно отметили, при вызове метода необходимо передавать self, так как метод вызывается в контексте конкретного объекта. Таким образом, методы в Python привязаны к объекту, а не к классу. Например, метод f() из вашего примера будет привязан к конкретному экземпляру класса Test.
В Java ситуация немного иная. В Java методы принадлежат классу, а не объекту. При вызове метода через объект в Java нет необходимости передавать self или другой аналогичный объект, так как метод вызывается непосредственно через объект, который уже имеет доступ к своим методам. Таким образом, объект в Java не хранит свои методы, они определены в классе, и все экземпляры этого класса будут использовать один и тот же код метода.
Таким образом, основное различие заключается в том, что методы в Python привязаны к объекту, а в Java - к классу. В остальном концепция ООП остается примерно одинаковой в обоих языках.