Article View: pl.comp.programming
Article #217420Re: Python i klasy oraz dawka magii czyli niezrozumienie
From: Piotr Wladyka
Date: Wed, 30 Jun 2021 13:04
Date: Wed, 30 Jun 2021 13:04
39 lines
2638 bytes
2638 bytes
środa, 3 marca 2021 o 12:58:08 UTC+1 Roman Tyczka napisał(a):
[ - CIACH - ]
> Ale nie mogę pojąć jak to jest zrobione od strony języka, bo gdy patrzę
> na klasy trybów to niektóre się niczym nie różnią, a wynik ich użycia
> daje inne efekty, np. takie trzy tryby OFB, CFB i CFB8:
>
> class OFB(Mode, ModeWithInitializationVector):
> name = "OFB"
[ - CIACH - ]
> Poza polem "name" każda klasa jest identyczna, a jednak wynik jest inny.
> Jak to działa?
Odpowiedź masz na samym początku:
- - - - - - -
import abc
import typing
from cryptography import utils
from cryptography.hazmat.primitives._cipheralgorithm import CipherAlgorithm
class Mode(metaclass=abc.ABCMeta):
@abc.abstractproperty
def name(self) -> str:
"""
A string naming this mode (e.g. "ECB", "CBC").
"""
- - - - - - -
Autor używa mata-klas, prawdopodobnie dlatego, że pakiet jest napisany dla różnych wersji pythona (CPython, PyPy, Py+Rust), więc rzeczywista implementacja algorytmu siedzi głębiej (wybór "kawałków kodu do późniejszego użycia" odbywa się jeszcze na poziomie instalacji modułu - pip, ... etc) , a właśnie zmienna "Mode.name" służy do wyboju już konkretnej metody spośród "dostępnych dla tego środowiska".
---
pzdr,
Vlad P.
Technical Details
Message-ID:
<3678d395-cb91-455a-86f1-996ce9daab84n@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mailReferences:
<603f79a0$0$514$65785112@news.neostrada.pl>Show Full Headers
Complete Article Headers
X-Received: by 2002:a05:622a:1748:: with SMTP id l8mr7981162qtk.350.1625058285606; Wed, 30 Jun 2021 06:04:45 -0700 (PDT) X-Received: by 2002:aed:2064:: with SMTP id 91mr31833882qta.318.1625058285436; Wed, 30 Jun 2021 06:04:45 -0700 (PDT) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail Newsgroups: pl.comp.programming Date: Wed, 30 Jun 2021 06:04:45 -0700 (PDT) In-Reply-To: <603f79a0$0$514$65785112@news.neostrada.pl> Injection-Info: google-groups.googlegroups.com; posting-host=2a02:a31a:a042:2c80:466d:57ff:fea3:3dd7; posting-account=M3tVVAkAAAB2-Rch_oMIXei0hytn9P48 NNTP-Posting-Host: 2a02:a31a:a042:2c80:466d:57ff:fea3:3dd7 References: <603f79a0$0$514$65785112@news.neostrada.pl> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <3678d395-cb91-455a-86f1-996ce9daab84n@googlegroups.com> Subject: Re: Python i klasy oraz dawka magii czyli niezrozumienie From: Piotr Wladyka <piotr.wladyka@gmail.com> Injection-Date: Wed, 30 Jun 2021 13:04:45 +0000 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit