NameError: لم يتم تعريف اسم "الذات"
سؤال
لماذا هذا الهيكل
class A:
def __init__(self, a):
self.a = a
def p(self, b=self.a):
print b
ويعطي NameError: name 'self' is not defined
الخطأ؟
المحلول
ويتم تقييم القيم حجة افتراضي في وظيفة تحديد الوقت، ولكن self
حجة لا تتوفر إلا في وقت استدعاء دالة. وهكذا الحجج في القائمة حجة لا يمكن أن يشير بعضها البعض.
وانها نمط مشترك الافتراضي حجة لNone
وإضافة اختبار لذلك في التعليمات البرمجية:
def p(self, b=None):
if b is None:
b = self.a
print b
نصائح أخرى
لالحالات التي أود أيضا أن يكون لديك خيار تحديد "ب" إلى بلا:
def p(self, **kwargs):
b = kwargs.get('b', self.a)
print b
إذا كنت قد وصلت هنا عن طريق البريد الإلكتروني، من فضلك تأكد للتأكد من أن كنت قد أعطيت النفس كمعلمة الأول إلى وظيفة الطبقة. خصوصا إذا حاولت الرجوع قيم هذا الكائن داخل الدالة.
def foo():
print(self.bar)
> NameError: لم يتم تحديد اسم 'النفس'
def foo(self):
print(self.bar)
> "مبروك لك تخلصوا من NameError!"
لا تنتمي إلى StackOverflow