Найти - Пользователи
Полная версия: Классы Паттерны и ООП в пайтон
Начало » Python для новичков » Классы Паттерны и ООП в пайтон
1 2 3 4
texsce
m1r42
ок, но суть та же
в сущности вы правы, но абстракция предполагает заявление интерфейса без конкретной реализации, допустим есть abc модуль для реализации абстракт класса, но с учетом того, что он идет как модуль, возникает вопрос может быть идейно абстракция реализована в рамках языка, но не через конкретные инструменты или сущности? И если это так - каким образом это работает?
ZerG
Какая-то странная попытка натянуть жабу на удава
texsce
ZerG
Какая-то странная попытка натянуть жабу на удава
ну получается скорее притянуть удава к виду джавы
а как вообще в пайтоне планировать архитектуру решения без этого всего, чисто модули переменные и функции?
m1r42
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()
xam1816
texsce
как в пайтоне реализована абстракция- базовый принцип ООП?
так сравни php и python

вот из интернета, с первых страниц
php
 
<?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
  
# 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 снобы, ну давайте разберемся с вашими ответами
у тебя тема из разряда - Умный не спросит, дурак не поймет.
m1r42
texsce
возникает вопрос может быть идейно абстракция реализована в рамках языка
да
 class MyClass():
    def info(self):
        pass
class MySubClass(MyClass):
    def info(self):
        print("инфа")
MySubClass().info()
m1r42
Почему - то вспомнилась цитата из “Двенадцать стульев”:

Что такое, товарищи, дебют и что такое, товарищи, идея? Дебют, товарищи, — это «Quasi una fantasia». Ну это всем понятно. А что такое, товарищи, значит идея? Идея, товарищи, — это человеческая мысль, облечённая в логическую шахматную форму.
texsce
m1r42
ZerG
правильно ли я понимаю что пайтон язык более высокого уровня и на нем архитектурные решения смысла писать почти нет, достаточно реализовывать скрипты использующие уже готовые модули ?
Rodegast
> по азам-то я прошелся, а вот на классах у меня ступняк

Ну классы это как бы и есть “азы”

> вообще вопрос был в сторону анотации типов

Ну Я этим не пользуюсь.

> как в пайтоне реализована абстракция- базовый принцип ООП?

Вопроса не понял.
m1r42
texsce
достаточно реализовывать скрипты использующие уже готовые модули
Так-то можно и свои модули реализовывать сколько влезет.
texsce
правильно ли я понимаю что пайтон язык более высокого уровня
Более высокого чем что? Python - высокоуровневый язык программирования общего назначения с динамической строгой типизацией и автоматическим управлением памятью.
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