Auf dieser Seite
Buchbesprechung: Python Descriptors
Über das Buch:
- Autor: Jacob Zimmerman
- ISBN (pbk): 978-1-4842-3726-7
- ISBN (Elektronisch): 978-1-4842-3727-4
- URL: https://link.springer.com/book/10.1007%2F978-1-4842-3727-4
Zusammenfassung:
Dieses Buch hat zwei Teile:
-
Erster Teil erklärt, was Deskriptoren sind, Daten vs. Nicht-Daten, und die grundlegende Implementierung der eingebauten
classmethod,staticmethodundpropertyDeskriptoren. -
Zweiter Teil zeigt, wie man eigene benutzerdefinierte Deskriptoren implementiert.
Höhepunkte:
Kapitel 4: Deskriptoren in der Standardbibliothek
- Die property-Klasse
class property:
def __init__(self, fget=None, fset=None, fdel=None):
self.fget = fget
self.fset = fset
self.fdel = fdel
def __get__(self, instance, owner):
if instance is None:
return self
elif self.fget is None:
raise AttributeError("unreadable attribute")
else:
return self.fget(instance)
def __set__(self, instance, value):
if self.fset is None:
raise AttributeError("can't set attribute")
else:
self.fset(instance, value)
def __delete__(self, instance):
if self.fdel is None:
raise AttributeError("can't delete attribute")
else:
self.fdel(instance)
def getter(self, fget):
return type(self)(fget, self.fset, self.fdel)
def setter(self, fset):
return type(self)(self.fget, fset, self.fdel)
def deleter(self, fdel):
return type(self)(self.fget, self.fset, fdel)
- Der classmethod-Deskriptor
class classmethod:
def __init__(self, func):
self.func = func
def __get__(self, instance, owner):
return functools.partial(self.func, owner)
- Der staticmethod-Deskriptor
class staticmethod:
def __init__(self, func):
self.func = func
def __get__(self, instance, owner):
return self.func
Meinung
Ich habe das Lesen dieses Buches genossen, besonders den ersten Teil, er zeigt ein Blickfenster eines Entwicklers, der nicht an der Kernentwicklung von Python selbst beteiligt ist. Er sagt manchmal auch, fragen Sie einen Core-Developer, wenn Sie die genaue Begründung dafür wissen wollen.
Sie brauchen keinen geöffneten Editor neben sich beim Lesen, also habe ich es ziemlich viel im Bus gelesen.
Fazit:
- Niveau: Fortgeschritten
- Ich empfehle dieses Buch für Python-Entwickler, die wissen wollen, was unter der Haube passiert, mit den internen Funktionen von Python experimentieren und neugierig sind, wie alles funktioniert.