Kaedah sihir be...LOGIN

Kaedah sihir berkaitan operator

Terdapat banyak kaedah ajaib yang berkaitan dengan pengendali, j akan menyenaraikan secara kasar dua kategori berikut:

1. Operator perbandingan

cmp__(diri sendiri, lain)Jika kaedah mengembalikan nombor negatif, ia bermakna diri sendiri < Ia amat tidak disyorkan untuk mentakrifkan __cmp__ Sebaliknya, yang terbaik adalah untuk mentakrifkan __lt__, __eq__ dan kaedah lain secara berasingan untuk melaksanakan fungsi perbandingan. __cmp__ ditamatkan dalam Python3. . lain) mentakrifkan kelakuan pengendali perbandingan < __gt__(diri sendiri, lain) mentakrifkan kelakuan pengendali perbandingan > Kelakuan pengendali <= __ge__(diri sendiri, orang lain) mentakrifkan kelakuan pengendali perbandingan >=

Lihat contoh mudah untuk difahami:

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
class Number(object):
    def __init__(self, value):
        self.value = value
    def __eq__(self, other):
        print('__eq__')
        return self.value == other.value
    def __ne__(self, other):
        print('__ne__')
        return self.value != other.value
    def __lt__(self, other):
        print('__lt__')
        return self.value < other.value
    def __gt__(self, other):
        print('__gt__')
        return self.value > other.value
    def __le__(self, other):
        print('__le__')
        return self.value <= other.value
    def __ge__(self, other):
        print('__ge__')
        return self.value >= other.value
if __name__ == '__main__':
    num1 = Number(2)
    num2 = Number(3)
    print('num1 == num2 ? --------> {} \n'.format(num1 == num2))
    print('num1 != num2 ? --------> {} \n'.format(num1 == num2))
    print('num1 < num2 ? --------> {} \n'.format(num1 < num2))
    print('num1 > num2 ? --------> {} \n'.format(num1 > num2))
    print('num1 <= num2 ? --------> {} \n'.format(num1 <= num2))
    print('num1 >= num2 ? --------> {} \n'.format(num1 >= num2))

Hasil keluarannya ialah:

__eq__
num1 == num2 ? --------> False
__eq__
num1 != num2 ? --------> False
__lt__
num1 < num2 ? --------> True
__gt__
num1 > num2 ? --------> False
__le__
num1 <= num2 ? --------> True
__ge__
num1 >= num2 ? --------> False

2

Kaedah ajaib
kuasa sendiri) melaksanakan operasi **shi. , lain-lain) melaksanakan operasi bit<<__rshift__(diri sendiri, lain-lain) melaksanakan operasi bit<<__rshift__(diri sendiri, lain-lain) melaksanakan operasi bit>>__dan __(i)__dan __(imelaksanakan operasi bit`melaksanakan operasi bit^
Kaedah SihirArahan.
__floordiv __ (diri, lain -lain) implement pembahagian benar
__truediv__(diri, orang lain) melaksanakan pembahagian benar Kaedah ini hanya akan berkuat kuasa jika anda mengisytiharkan dari __masa hadapan__ bahagian import
__mod__(diri, yang lain) yang kekal. operasi
__divmod__(diri sendiri, lain) melaksanakan fungsi terbina dalam divmod()
__pow__(diri, lain) __(__
lain) __atau__( diri, lain)
__xor__(diri sendiri, lain-lain)


bahagian seterusnya
babperisian kursus