在下面的代码中,User
类需要访问get_user
类实例中的函数WebService
,因为它包含与Web服务器进行身份验证所需的其他功能(最后一个)。调频)。实际代码为here。
class WebService:
def __init__(self, key):
self.apikey = key
def get_user(self, name):
pass # Omitted
class User:
def __init__(self, name, webservice):
self.name = name
self.ws = webservice
def fill_profile(self):
data = self.ws.GetUser(self.name)
# Omitted
问题是需要在每个'用户'内部保存一个引用。还有另一种方法吗?或者只是我过于复杂的事情,这是它在现实世界中的实际运作方式?
答案 0 :(得分:2)
如果所有用户的Web服务对象都相同,您当然可以创建引用a static variable。
语法为:
class User:
webservice = ...
...
然后,您甚至可以从User
实例访问它,但不能以这种方式分配它,这需要User.webservice
语法。
您也会在评论中提出好的设计方案。
答案 1 :(得分:2)
根据要求: 至于处理get_top_albums和get_friends之类的东西,这取决于你想如何建模系统。如果您不想在本地缓存数据,我会说每次都使用用户ID调用该服务。如果您确实想在本地缓存数据,可以将User对象传递给WebService中的方法,然后让该方法填充User的成员。您必须做出设计决策,但要么拥有WebService和User(可能是最好的),要么只是UserWebService。