كيفية تعيين متغيرات المثيل كقيم افتراضية لوسائط الكلمات الرئيسية في نفس الفئة في بايثون

StackOverflow https://stackoverflow.com//questions/23002587

سؤال

في الإصدار 3.3+ من Python، عند وجود فئة تحتوي على طريقة، فإن الفئة لديها متغير مثيل، وهو كائن بسيط () (سنسميه self.FALSE).كيف يمكنني استخدام متغير المثيل هذا كقيمة افتراضية لوسيطة الكلمة الرئيسية؟

class Test:
    def __init__(self):
        self.FALSE=object();
    def Tester(self, key=self.FALSE):
        pass;

هذا، بالطبع، لا يعمل لأن نطاق القيم الافتراضية لوسيطة الكلمة الرئيسية لا يتضمن الذات (ولا يشمل فئة الاختبار بشكل عام).ومع ذلك، فهو يتضمن المتغيرات العامة وبعض الكائنات على الأقل.

هل هناك طريقة للقيام بذلك؟ليست لدي حاجة ماسة في الوقت الحالي، ولكن سيكون من الرائع حقًا أن أفعل ذلك بطريقة ما.أعتقد أنك ستكون قادرًا على تمرير أي شيء كقيمة افتراضية لوسيطة الكلمة الرئيسية.بالتأكيد يجب أن تكون هناك طريقة.

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

المحلول

في البداية يكون الافتراضي للقيمة key مثل None وفي الدالة إذا key يكون None, ، ثم يمكنك تعيين القيمة الافتراضية، مهما شئت.

def Tester(self, key=None):
    if key is None:
        key = self.FALSE

أيضًا، لا تحتاج إلى فواصل منقوطة في Python، كما نحتاج في C/C++/JAVA.

نصائح أخرى

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

يجب أن تفعل كما يوحي thefourtheye والتعامل مع تعيين الافتراضي داخل جسم الطريقة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top