إعادة تعريف __and__ عامل
-
28-09-2019 - |
سؤال
لماذا لا يمكنني إعادة تعريف __and__
المشغل أو العامل؟
class Cut(object):
def __init__(self, cut):
self.cut = cut
def __and__(self, other):
return Cut("(" + self.cut + ") && (" + other.cut + ")")
a = Cut("a>0")
b = Cut("b>0")
c = a and b
print c.cut()
أريد (a>0) && (b>0)
, ، لكنني حصلت على ب ، هذا السلوك المعتاد لـ and
المحلول
__and__
هو الثنائي (bitwise) &
المشغل ، وليس المنطقي and
المشغل أو العامل.
بسبب ال and
المشغل هو مشغل دائرة قصيرة ، لا يمكن تنفيذه كدالة. هذا هو ، إذا كانت الوسيطة الأولى خاطئة ، فإن الوسيطة الثانية لم يتم تقييمها على الإطلاق. إذا حاولت تنفيذ ذلك كدالة ، فيجب تقييم كلتا الوسيطتين قبل التذرع بالوظيفة.
نصائح أخرى
لأنه لا يمكنك إعادة تعريف كلمة رئيسية (هذا ما and
هو) في بيثون. __add__
يستخدم لفعل شيء آخر:
يتم استدعاء هذه الطرق لتنفيذ العمليات الحسابية الثنائية (...
&
...
لا تنتمي إلى StackOverflow