سؤال

لذلك أنا أستخدم أعضاء فئة ثابتة حتى أتمكن من مشاركة البيانات بين أساليب الفصل والأساليب الثابتة لنفس الفصل (لن يكون هناك سوى مثيل واحد للفئة). أنا أفهم هذا الغرامة ، لكنني أتساءل فقط متى يتم تهيئة الأعضاء الثابتة؟ هل هو على الاستيراد؟ في أول استخدام للفصل؟ لأنني سأتصل بالأعضاء الثابتة في هذه الفئة من أكثر من وحدة واحدة (وبالتالي أكثر من بيان استيراد واحد). هل ستشترك جميع الوحدات التي تصل إلى الأساليب الثابتة في نفس أعضاء البيانات الثابتة؟ وإذا قام عميلي الرئيسي بحذف مثيل صفي ، ثم يعيد إنشاءه (دون إنهاء الأشياء تمامًا أو إعادة استيراد الأشياء) ، فهل سيتم الحفاظ على أعضاء البيانات؟

هل كانت مفيدة؟

المحلول

سيتم تهيئتها في وقت تعريف الفصل ، والذي سيحدث في وقت الاستيراد إذا كنت تقوم باستيراد الفصل كجزء من الوحدة النمطية. هذا على افتراض نمط تعريف عضو في الفصل "ثابت" مثل هذا:

class Foo:
    bar = 1

print Foo.bar # prints '1'

لاحظ أن هذا هو عضو فئة ثابتة ، ليست هناك حاجة إلى إنشاء إنشاء الفصل.

سيتم تنفيذ بيان الاستيراد محتويات الوحدة النمطية مرة واحدة تمامًا ، بغض النظر عن عدد المرات أو مكان تنفيذها.

نعم ، سيتم مشاركة الأعضاء الثابتة من قبل أي رمز يصل إليهم.

نعم ، سيتم الحفاظ على الأعضاء الثابتين في الفصل إذا قمت بحذف كائن نوعه هو ذلك الفئة:

# Create static member
class Foo:
    bar = 1

# Create and destroy object of type Foo
foo = Foo()
del foo

# Check that static members survive
print Foo.bar # Still prints '1'
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top