我正在構建具有可選Facebook登錄的Web應用程序。通過Facebook API創建的用戶在我的應用程序中的多個點處理方式不同。我想將這些差異封裝在覆蓋方法的子類Person
中。如何根據行信息決定要實例化哪個聲明模型
class Person(Model):
def get_profile_picture(self):
return profile_pictures.url(self.picture)
class FacebookPerson(Person):
def get_profile_picture(self):
return 'http:/.../%s.jpg' % self.graph_id
我想避免討厭的if self.graph_id
,只是查詢Person模型,並得到每個用戶的合適的對象。
我想到了黑客入侵的metaclass來添加FacebookPerson作爲基礎。顯然我想避免這種巫術。
我正在使用Flask和Flask-SQLAlchemy。