Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 9, 2022 11:46:00

texsce
Зарегистрирован: 2022-11-08
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Классы Паттерны и ООП в пайтон

m1r42
ок, но суть та же
в сущности вы правы, но абстракция предполагает заявление интерфейса без конкретной реализации, допустим есть abc модуль для реализации абстракт класса, но с учетом того, что он идет как модуль, возникает вопрос может быть идейно абстракция реализована в рамках языка, но не через конкретные инструменты или сущности? И если это так - каким образом это работает?

Офлайн

#2 Ноя. 9, 2022 11:50:47

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Классы Паттерны и ООП в пайтон

Какая-то странная попытка натянуть жабу на удава



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Ноя. 9, 2022 12:04:13

texsce
Зарегистрирован: 2022-11-08
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Классы Паттерны и ООП в пайтон

ZerG
Какая-то странная попытка натянуть жабу на удава
ну получается скорее притянуть удава к виду джавы
а как вообще в пайтоне планировать архитектуру решения без этого всего, чисто модули переменные и функции?

Отредактировано texsce (Ноя. 9, 2022 12:04:48)

Офлайн

#4 Ноя. 9, 2022 12:06:44

m1r42
Зарегистрирован: 2022-07-26
Сообщения: 133
Репутация: +  7  -
Профиль   Отправить e-mail  

Классы Паттерны и ООП в пайтон

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()

Офлайн

#5 Ноя. 9, 2022 12:09:19

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1352
Репутация: +  118  -
Профиль   Отправить e-mail  

Классы Паттерны и ООП в пайтон

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 снобы, ну давайте разберемся с вашими ответами
у тебя тема из разряда - Умный не спросит, дурак не поймет.

Офлайн

#6 Ноя. 9, 2022 12:14:02

m1r42
Зарегистрирован: 2022-07-26
Сообщения: 133
Репутация: +  7  -
Профиль   Отправить e-mail  

Классы Паттерны и ООП в пайтон

texsce
возникает вопрос может быть идейно абстракция реализована в рамках языка
да
 class MyClass():
    def info(self):
        pass
class MySubClass(MyClass):
    def info(self):
        print("инфа")
MySubClass().info()

Офлайн

#7 Ноя. 9, 2022 12:20:31

m1r42
Зарегистрирован: 2022-07-26
Сообщения: 133
Репутация: +  7  -
Профиль   Отправить e-mail  

Классы Паттерны и ООП в пайтон

Почему - то вспомнилась цитата из “Двенадцать стульев”:

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

Отредактировано m1r42 (Ноя. 9, 2022 12:22:21)

Офлайн

#8 Ноя. 9, 2022 12:24:39

texsce
Зарегистрирован: 2022-11-08
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Классы Паттерны и ООП в пайтон

m1r42
ZerG
правильно ли я понимаю что пайтон язык более высокого уровня и на нем архитектурные решения смысла писать почти нет, достаточно реализовывать скрипты использующие уже готовые модули ?

Офлайн

#9 Ноя. 9, 2022 12:27:27

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2749
Репутация: +  184  -
Профиль   Отправить e-mail  

Классы Паттерны и ООП в пайтон

> по азам-то я прошелся, а вот на классах у меня ступняк

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

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

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

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

Вопроса не понял.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#10 Ноя. 9, 2022 13:05:45

m1r42
Зарегистрирован: 2022-07-26
Сообщения: 133
Репутация: +  7  -
Профиль   Отправить e-mail  

Классы Паттерны и ООП в пайтон

texsce
достаточно реализовывать скрипты использующие уже готовые модули
Так-то можно и свои модули реализовывать сколько влезет.
texsce
правильно ли я понимаю что пайтон язык более высокого уровня
Более высокого чем что? Python - высокоуровневый язык программирования общего назначения с динамической строгой типизацией и автоматическим управлением памятью.

Отредактировано m1r42 (Ноя. 9, 2022 13:11:37)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version