في Python ، ماذا يعني إذا كان الكائن قابلاً للانحراف أم لا؟

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

  •  03-07-2019
  •  | 
  •  

سؤال

ما هي أنواع الكائنات التي تقع في مجال "قابلة للانتقاء"؟

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

المحلول

وهذا يعني في الأساس أن الكائن ينفذ __getitem__() طريقة. بمعنى آخر ، يصف الكائنات "الحاويات" ، مما يعني أنها تحتوي على كائنات أخرى. وهذا يشمل القوائم ، tuples ، والقواميس.

نصائح أخرى

خارج الجزء العلوي من رأسي ، فإن ما يلي هي المدمجة الوحيدة التي يمكن ترتيبها:

string:  "foobar"[3] == "b"
tuple:   (1,2,3,4)[3] == 4
list:    [1,2,3,4][3] == 4
dict:    {"a":1, "b":2, "c":3}["c"] == 3

ولكن إجابة Mipadi صحيح - أي فئة تنفذها __getitem__ قابلة للانتقاء

الكائن القابل للنص هو كائن يسجل العمليات التي تم إجراؤها عليه ويمكنه تخزينها كـ "نص" يمكن إعادة تشغيله.

على سبيل المثال ، انظر: إطار البرمجة النصية للتطبيق

الآن ، إذا لم يكن Alistair يعرف ما الذي طلبه وكان يعني حقًا الأشياء "القابلة للترجمة" (كما حررها الآخرون) ، ثم (كما أجاب Mipadi أيضًا) ، هذا هو الصحيح:

كائن قابل للنقل هو أي كائن يقوم بتنفيذ __getitem__ طريقة خاصة (قوائم التفكير ، والقواميس).

معنى التراجع في الحوسبة هو: "رمز (مكتوب بشكل سيء كمنفذ ولكن في الممارسة العملية عادة لا) يستخدم في البرنامج ، وحده أو مع الآخرين ، لتحديد أحد عناصر الصفيف."

الآن ، في المثال البسيط الذي قدمته @user2194711 يمكننا أن نرى أن عنصر الإلحاق غير قادر على أن يكون جزءًا من القائمة بسبب سببين:-

1) نحن لا ندعو حقًا إلحاق الطريقة ؛ لأنه يحتاج () لسماعها.

2) يشير الخطأ إلى أن الوظيفة أو الطريقة غير قابلة للانحراف ؛ يعني أنها غير قابلة للفهرسة مثل قائمة أو تسلسل.

الآن انظر هذا:-

>>> var = "myString"
>>> def foo(): return 0
... 
>>> var[3]
't'
>>> foo[3]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'function' object is not subscriptable

هذا يعني أنه لا يوجد مشترك أو يقول عناصر في function كما يحدث في التسلسلات. ولا يمكننا الوصول إليهم كما نفعل ، بمساعدة [].

ايضا؛ كما mipadi قال في إجابته وهذا يعني في الأساس أن الكائن ينفذ __getitem__() طريقة. (إذا كانت قابلة للانحراف). وبالتالي فإن الخطأ المنتج:

arr.append["HI"]

typeerror: "buildin_function_or_method" كائن غير قابل للانتقاء

كان لي هذه المسألة نفسها. كنت أفعل

arr = []
arr.append["HI"]

لذلك باستخدام [ كان يسبب خطأ. يجب أن يكون arr.append("HI")

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