Форум сайта python.su
m1r42в сущности вы правы, но абстракция предполагает заявление интерфейса без конкретной реализации, допустим есть abc модуль для реализации абстракт класса, но с учетом того, что он идет как модуль, возникает вопрос может быть идейно абстракция реализована в рамках языка, но не через конкретные инструменты или сущности? И если это так - каким образом это работает?
ок, но суть та же
Офлайн
Какая-то странная попытка натянуть жабу на удава
Офлайн
ZerGну получается скорее притянуть удава к виду джавы
Какая-то странная попытка натянуть жабу на удава
Отредактировано texsce (Ноя. 9, 2022 12:04:48)
Офлайн
texsceбез реализации
но абстракция предполагает заявление интерфейса без конкретной реализации
from abc import ABC, abstractmethod class MyAbsClass(ABC): @abstractmethod def info(self): pass class MyClass(MyAbsClass): def info(self): print("инфа") obj = MyClass() obj.info()
Офлайн
texsceтак сравни php и python
как в пайтоне реализована абстракция- базовый принцип ООП?
<?php
abstract class AbstractClass
{
// Данные методы должны быть определены в дочернем классе
abstract protected function getValue();
abstract protected function prefixValue($prefix);
// Общий метод
public function printOut() {
print $this->getValue() . "\n";
}
}
class ConcreteClass1 extends AbstractClass
{
protected function getValue() {
return "ConcreteClass1";
}
public function prefixValue($prefix) {
return "{$prefix}ConcreteClass1";
}
}
class ConcreteClass2 extends AbstractClass
{
public function getValue() {
return "ConcreteClass2";
}
public function prefixValue($prefix) {
return "{$prefix}ConcreteClass2";
}
}
$class1 = new ConcreteClass1;
$class1->printOut();
echo $class1->prefixValue('FOO_') ."\n";
$class2 = new ConcreteClass2;
$class2->printOut();
echo $class2->prefixValue('FOO_') ."\n";
?>
# Python program demonstrate # abstract base class work from abc import ABC, abstractmethod class Car(ABC): def mileage(self): pass class Tesla(Car): def mileage(self): print("The mileage is 30kmph") class Suzuki(Car): def mileage(self): print("The mileage is 25kmph ") class Duster(Car): def mileage(self): print("The mileage is 24kmph ") class Renault(Car): def mileage(self): print("The mileage is 27kmph ") # Driver code t= Tesla () t.mileage() r = Renault() r.mileage() s = Suzuki() s.mileage() d = Duster() d.mileage()
texsceабстракция в ооп - это когда описываешь базовый класс с ключевыми, важными, основными, определяющими характеристиками. Он обобщенный - абстрактный. От него наследуются другие более уточняющие классы, от них могут унаследоваться еще более уточняющие классы.Т.е не нужно для каждого класса описывать одно и тоже, это сделано на уровне выше, в абстрактном классе.
это наследование
texsceХоть зачитайся, это понимание приходит тогда, когда у тебя много кода - алгоритмов, ты их уже можешь писать, и понимаешь что их нужно как-то организовать, чтобы не переписывать одно и тоже по 100 раз и чтобы было меньше ошибок с использованием того кода, который уже есть.
может литературу подскажете?
texsceу тебя тема из разряда - Умный не спросит, дурак не поймет.
ох…. да ребята, а я думал в php снобы, ну давайте разберемся с вашими ответами
Офлайн
texsceда
возникает вопрос может быть идейно абстракция реализована в рамках языка
class MyClass(): def info(self): pass class MySubClass(MyClass): def info(self): print("инфа") MySubClass().info()
Офлайн
Почему - то вспомнилась цитата из “Двенадцать стульев”:
Что такое, товарищи, дебют и что такое, товарищи, идея? Дебют, товарищи, — это «Quasi una fantasia». Ну это всем понятно. А что такое, товарищи, значит идея? Идея, товарищи, — это человеческая мысль, облечённая в логическую шахматную форму.
Отредактировано m1r42 (Ноя. 9, 2022 12:22:21)
Офлайн
m1r42
ZerG
правильно ли я понимаю что пайтон язык более высокого уровня и на нем архитектурные решения смысла писать почти нет, достаточно реализовывать скрипты использующие уже готовые модули ?
Офлайн
> по азам-то я прошелся, а вот на классах у меня ступняк
Ну классы это как бы и есть “азы”
> вообще вопрос был в сторону анотации типов
Ну Я этим не пользуюсь.
> как в пайтоне реализована абстракция- базовый принцип ООП?
Вопроса не понял.
Офлайн
texsceТак-то можно и свои модули реализовывать сколько влезет.
достаточно реализовывать скрипты использующие уже готовые модули
texsceБолее высокого чем что? Python - высокоуровневый язык программирования общего назначения с динамической строгой типизацией и автоматическим управлением памятью.
правильно ли я понимаю что пайтон язык более высокого уровня
Отредактировано m1r42 (Ноя. 9, 2022 13:11:37)
Офлайн