Tôi đang sử dụng thư viện Python cho Google App Engine. Làm thế nào tôi có thể ghi đè lên các phương pháp equals()
trên lớp để nó phán xét bình đẳng trên user_id
lĩnh vực của lớp sau:Làm cách nào để ghi đè bằng() trong kiểu mô hình dữ liệu công cụ ứng dụng của 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)
Ngay bây giờ, tôi đang làm equalty bằng cách nhận một đối tượng UserAccount
và làm user1.user_id == user2.user_id
. Có cách nào tôi có thể ghi đè nó để 'user1 == user2' sẽ chỉ xem các trường 'user_id'?
Cảm ơn trước
Bạn không cần ghi đè __ne__ - triển khai mặc định, IIRC, cuộc gọi __eq__. Ngoài ra, trả về một lớp ngoại lệ từ một cuộc gọi đến một phương thức nội trang? WTF? Nâng nó! –
@Nick Johnson, xin lỗi nhưng bạn bị SAI trong cả hai trường hợp, NotImplemented không phải là ngoại lệ được đọc http://docs.python.org/library/constants.html#NotImplemented và thử xóa '__ne__' và' print UserAccount() == UserAccount(), UserAccount()! = UserAccount() 'in' True True' :) –
@Nick Johnson, cũng http://stackoverflow.com/questions/878943/why-return-notimplmented-instead-of-raising- notimplementederror giải thích tại sao NotImplemented thay vì NotImplementedError –