في Python ، ماذا يعني إذا كان الكائن قابلاً للانحراف أم لا؟
-
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")