لماذا لا يمكنني الوصول إلى مثيل. __ class__ سمة في بيثون؟
-
26-09-2019 - |
سؤال
أنا جديد على Python ، وأنا أعلم أنني يجب أن أفتقد شيئًا بسيطًا جدًا ، لكن لماذا لا يعمل هذا الكود البسيط للغاية؟
class myClass:
pass
testObject = myClass
print testObject.__class__
أحصل على الخطأ التالية:
AttributeError: class myClass has no attribute '__class__'
لا يوجد كل كائن في بيثون __class__
ينسب؟
المحلول
أعتقد أنني أدركت خطأي. اعتقدت أن الرمز testObject = myClass
كان إنشاء مثيل/كائن جديد للفئة ، لكنه كان في الواقع تعيين إشارة إلى الفئة نفسها. لقد غيرت الرمز إلى:
class myClass:
pass
testObject = myClass()
print testObject.__class__
وهو يعمل الآن كما كنت أتوقع
نصائح أخرى
معظم ، ولكن ليس كل شيء ، لديها الكائنات في بيثون __class__
ينسب. يمكنك عادة الوصول إليه لتحديد فئة الكائن.
يمكنك الحصول على فئة من أي كائن عن طريق الاتصال type
عليه.
>>> class myClass:
... pass
...
>>> testObject = myClass
>>> type(testObject)
<type 'classobj'>
الطبقات الطراز القديمة ليس لها ملف __class__
ينسب.
class myClass(object):
pass
لا تنتمي إلى StackOverflow