2015-02-10 18 views
5

Piszę klasę frakcji i jednocześnie bawić zauważyłem to:dwa obiekty Pythona zarówno większa lub mniejsza niż siebie

>>> class Test: 
    def __init__(self): 
     pass 


>>> Test()>Test() 
True 
>>> Test()>Test() 
False 

Dlaczego tak jest?

+1

Czy możesz pokazać nam swoją funkcję ... a raczej wygląda? – taesu

+0

Twoja implementacja frakcji byłaby dobra, lub odpowiednie części z przeciążeniami. – Marcin

+0

Co z twoją metodą "__init__"? Spróbuj pokazać nam kompletny minimalny kod. –

Odpowiedz

3

Mówiąc prościej, twoje porównania nie odnoszą się bezpośrednio do danych klasy, ale do samej klasy (id (Foo (1))), ponieważ nie napisałeś wprost porównań.

Porównuje id instancji, dlatego czasami jest to prawda, a innym razem jest to fałsz.

Foo(1) 
=> <__main__.Foo instance at 0x2a5684> 
    Foo(1) 
=> <__main__.Foo instance at 0x2a571c> 
    Foo(1) 
+0

Czy mógłbyś wyjaśnić więcej. Nie rozumiem, dlaczego jeśli uruchomię 'Foo (5)> Foo (2)' da Fałsz, a kiedy ponownie uruchomię ten sam test 'Foo (5)> Foo (2)' da True? – Marcin

+0

Twoja Droonkid

+0

Wiem, ale id jest inny, ale dlaczego porównanie jest za każdym razem? – Droonkid

Powiązane problemy