11
Używam bibliotek Pythona do Google App Engine. W jaki sposób można zastąpić metodę equals()
w klasie tak, kiedy uzna, równość w dziedzinie następnej klasy user_id
:Jak zastąpić equals() w modelu modelu danych silnika wyszukiwarki Google?
class UserAccount(db.Model):
# compare all equality tests on user_id
user = db.UserProperty(required=True)
user_id = db.StringProperty(required=True)
first_name = db.StringProperty()
last_name = db.StringProperty()
notifications = db.ListProperty(db.Key)
Teraz robię equalty przez coraz UserAccount
obiekt i robi user1.user_id == user2.user_id
. Czy istnieje sposób, w jaki mogę go przesłonić, aby "user1 == user2" wyświetlał tylko pola "user_id"?
góry dzięki
Nie należy zastępować __ne__ - domyślnej implementacji, IIRC, połączeń __eq__. Zwracasz także klasę wyjątków z wywołania wbudowanej metody? WTF? Podnieś to! –
@Nick Johnson, przepraszam, ale jesteś NIEPRAWIDŁOWY w obu przypadkach, NotImplemented nie jest wyjątkiem odczytywanym http://docs.python.org/library/constants.html#NotImplementowany i spróbuj usunąć '__ne__' i' print UserAccount() == UserAccount(), UserAccount()! = UserAccount() 'drukuje' True True' :) –
@Nick Johnson, również http://stackoverflow.com/questions/878943/why-return-notimmented-instead-of-raising- notimplementederror wyjaśnia, dlaczego nie wykonano polecenia zamiast ImumInformedError –