الفرق بين المراجعتين لصفحة: «Python/copyreg»

من موسوعة حسوب
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:الوحدة <code>copyreg‎</code> في بايثون}}</noinclude> تقدّم وحدة copyreg طريقة لتعريف دوال تستخدم...'
 
لا ملخص تعديل
 
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:الوحدة <code>copyreg‎</code> في بايثون}}</noinclude>
<noinclude>{{DISPLAYTITLE:الوحدة <code>copyreg‎</code> في بايثون}}</noinclude>


تقدّم وحدة copyreg طريقة لتعريف دوال تستخدم أثناء سلسلة كائنات معيّنة في بايثون. تستخدم وحدتا pickle و copy هذه الدوال عند سلسلة أو نسخ تلك الكائنات. تقدّم الوحدة كذلك معلومات إعدادات حول الدوال البانية للكائنات التي ليست أصنافًا. يمكن لهذه الدوال البانية أن تكون دوال منشئة للكائنات factory functions أو نسخًا للأصناف.
تقدّم وحدة <code>copyreg</code> طريقة لتعريف دوال تستخدم أثناء سلسلة كائنات معيّنة في بايثون. تستخدم وحدتا <code>[[Python/pickle|pickle]]</code> و [[Python/copy|<code>copy</code>]] هذه الدوال عند سلسلة أو نسخ تلك الكائنات. تقدّم الوحدة كذلك معلومات إعدادات حول الدوال البانية للكائنات التي ليست أصنافًا. يمكن لهذه الدوال البانية أن تكون دوال منشئة للكائنات factory functions أو نسخًا للأصناف.


== الدالة ‎copyreg.constructor(object)‎ ==
== دوال الوحدة copyreg ==
تقدّم الوحدة <code>copyreg</code> الدوال التالية:


تصرّح هذه الدالة عن كون الكائن المعطى دالة بانية صحيحة. إن كان الكائن المعطى غير قابل للاستدعاء (وهكذا يكون غير صالح لأن يصبح دالة بانية) فإنّ الدالة تطلق الاستثناء TypeError.
=== الدالة [[Python/copyreg/constructor|‎<code>copyreg.constructor()‎</code>]] ===


== الدالة copyreg.pickle(type, function, constructor=None)‎ ==
تصرّح هذه الدالة عن كون الكائن المعطى دالة بانية صحيحة. إن كان الكائن المعطى غير قابل للاستدعاء (وهكذا يكون غير صالح لأن يصبح دالة بانية) فإنّ الدالة تطلق الاستثناء <code>TypeError</code>.


تصرّح الدالة عن وجوب استخدام الدالة المعطاة كدالة اختزال reduction function للكائنات من النوع المعطى. يجب أن تعيد الدالة المعطاة سلسلة نصية أو صفًّا يتضمّن عنصرين أو ثلاثة.
=== الدالة <code>[[Python/copyreg/pickle|copyreg.pickle()‎]]</code> ===


يجب أن يكون هذا المعامل الاختياري كائنًا قابلًا للاستدعاء يمكن استخدامه لإعادة بناء الكائن عند استدعاءه مع صفّ المعاملات المعاد بواسطة الدالة المعطاة عند إجراء عملية السلسلة. تطلق الدالة الاستثناء TypeError إن كان الكائن المعطى صنفًا أو كانت الدالة البانية المعطاة غير قابلة للاستدعاء.
تصرّح الدالة عن وجوب استخدام الدالة المعطاة كدالة اختزال reduction function للكائنات من النوع المعطى.
 
راجع وحدة pickle للاطلاع على المزيد من التفاصيل حول الواجهة البرمجية المتوقّعة من الدالة المعطاة والدالة البانية المعطاة. يجدر التنبيه إلى إمكانية استخدام خاصية جدول الإرسال dispatch_table في الكائن المُسَلسِل أو في الصنف المتفرّع من الصنف pickle.Pickler للتصريح عن دوال الاختزال.


== مثال ==
== مثال ==
يعرض المثال التالي طريقة تسجيل دالة سلسلة وكيفية استخدامها:
يعرض المثال التالي طريقة تسجيل دالة سَلسَلة وكيفية استخدامها:


<syntaxhighlight lang="python3">
<syntaxhighlight lang="python3">
سطر 38: سطر 37:
== انظر أيضًا ==
== انظر أيضًا ==


* الوحدة pickle في بايثون.
* [[Python/pickle|الوحدة pickle في بايثون.]]
* الوحدة marshal في بايثون.
* [[Python/list|الوحدة marshal في بايثون.]]
* الوحدة shelve في بايثون.
* [[Python/shelve|الوحدة shelve في بايثون.]]
== مصادر ==
== مصادر ==
[https://docs.python.org/3/library/array.html#array.append صفحة Efficient arrays of numeric values في توثيق بايثون الرسمي.]
[https://docs.python.org/3/library/array.html#array.append صفحة Efficient arrays of numeric values في توثيق بايثون الرسمي.]

المراجعة الحالية بتاريخ 20:47، 15 سبتمبر 2018


تقدّم وحدة copyreg طريقة لتعريف دوال تستخدم أثناء سلسلة كائنات معيّنة في بايثون. تستخدم وحدتا pickle و copy هذه الدوال عند سلسلة أو نسخ تلك الكائنات. تقدّم الوحدة كذلك معلومات إعدادات حول الدوال البانية للكائنات التي ليست أصنافًا. يمكن لهذه الدوال البانية أن تكون دوال منشئة للكائنات factory functions أو نسخًا للأصناف.

دوال الوحدة copyreg

تقدّم الوحدة copyreg الدوال التالية:

الدالة copyreg.constructor()‎

تصرّح هذه الدالة عن كون الكائن المعطى دالة بانية صحيحة. إن كان الكائن المعطى غير قابل للاستدعاء (وهكذا يكون غير صالح لأن يصبح دالة بانية) فإنّ الدالة تطلق الاستثناء TypeError.

الدالة copyreg.pickle()‎

تصرّح الدالة عن وجوب استخدام الدالة المعطاة كدالة اختزال reduction function للكائنات من النوع المعطى.

مثال

يعرض المثال التالي طريقة تسجيل دالة سَلسَلة وكيفية استخدامها:

>>> import copyreg, copy, pickle
>>> class C(object):
...     def __init__(self, a):
...         self.a = a
...
>>> def pickle_c(c):
...     print("pickling a C instance...")
...     return C, (c.a,)
...
>>> copyreg.pickle(C, pickle_c)
>>> c = C(1)
>>> d = copy.copy(c)  
pickling a C instance...
>>> p = pickle.dumps(c)  
pickling a C instance...

انظر أيضًا

مصادر

صفحة Efficient arrays of numeric values في توثيق بايثون الرسمي.