2017-04-18 39 views
0

我正在使用玩家数据的模型。在开发过程中,只需要某些数据。我的想法是创建一个PlayerData类,但我的业余头脑不理解/知道如何正确地做到这一点。如何仅在需要时创建和使用类变量/方法?

我明白这个代码是基本的,但它只是一个例子...

class PlayerData(object): 
    def __init__(self, player_id): 
     self.player_id = player_id 

    def past_games(self): 
     # only if requested, query DB for data 

    def vital_info(self): 
     # only if requested, query DB for data 

    def abilities(self): 
     # only if requested, query DB for data 

pd = PlayerData(235) 

如果我叫pd.vital_info的第一次,我只是想在这一点上执行查询。我如何构造这个以便请求的查询在其他查询不可用的情况下运行(除非以后需要)?

+0

如果查询放在函数内部,那么只有被调用函数内的查询应该运行 – WhatsThePoint

+1

我不认为我理解这个问题。你是否担心'pd.vital_info'也会导致'pd.abilities'运行? – roganjosh

+0

@roganjosh多数民众赞成多多少少我阅读 – WhatsThePoint

回答

1

以下代码应该可以帮助您了解如何在Python中调用类的函数。

class PlayerData: 

    def __init__(self,player_id): 
     print("Calling __init__. Yay!") 
     self.player_id = player_id 

    def past_games(self): 
     print("Calling past_games") 
     # only if requested, query DB for data 

    def vital_info(self): 
     print("Calling vital_info") 
     # only if requested, query DB for data 

    def abilities(self): 
     print("Calling Abilities") 
     # only if requested, query DB for data 

>> p = PlayerData(1) 
Calling __init__. Yay! #No other method was called so you see not print out 
>>p.past_games() 
Calling past_games 
>>p.vital_info() 
Calling Vital info 
>>p.abilities() 
Calling Abilities 

正如你看到的类函数需要显式调用。当类是初始化器时,只有少数几个方法被调用。其中一个是__init__

0

你根本不需要做任何事情。如果你的查询在单独的方法中,那么只有你实际调用的方法才会被执行。

相关问题