في هذه الصفحة
مراجعة الكتاب: Python Descriptors
حول الكتاب:
- المؤلف: Jacob Zimmerman
- ISBN (غلاف ورقي): 978-1-4842-3726-7
- ISBN (إلكتروني): 978-1-4842-3727-4
- URL: https://link.springer.com/book/10.1007%2F978-1-4842-3727-4
ملخص:
يحتوي هذا الكتاب على جزأين:
-
الجزء الأول يشرح ما هي الواصفات، البيانات مقابل غير البيانات، والتنفيذ الأساسي لواصفات
classmethodوstaticmethodوpropertyالمدمجة. -
الجزء الثاني يُظهر كيفية تنفيذ واصفاتك المخصصة.
أبرز المحتويات:
الفصل 4: الواصفات في المكتبة المعيارية
- فئة property
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)
- واصف classmethod
class classmethod:
def __init__(self, func):
self.func = func
def __get__(self, instance, owner):
return functools.partial(self.func, owner)
- واصف staticmethod
class staticmethod:
def __init__(self, func):
self.func = func
def __get__(self, instance, owner):
return self.func
الرأي
استمتعت بقراءة هذا الكتاب، خاصة الجزء الأول، يُظهر نافذة رأي من مطور غير مشارك في التطوير الأساسي لـ Python نفسه. أحياناً يقول أيضاً، اسأل مطوراً أساسياً إذا أردت معرفة التفكير الدقيق وراء ذلك.
لا تحتاج إلى فتح محرر بجانبك أثناء القراءة، لذا قرأته كثيراً في الحافلة.
الخلاصة:
- المستوى: متقدم
- أوصي بهذا الكتاب لمطوري Python الذين يحبون معرفة ما يحدث تحت الغطاء، تجربة الوظائف الداخلية لـ Python، وفضول حول كيفية عمل كل شيء.