Jam*_*mes 2 python convention styles memory-management self
我最近刚刚了解了self
Python 中的约定,并开始编写更复杂的代码。然而,一位经验丰富的程序员和我的朋友告诉我,self
在类方法中使用每个变量是浪费的。
我知道这self
会导致变量归属于该类。那么,除非有需要,避免使用是不是一种好的做法self
?
下面是一些从 API 获取英雄联盟信息并将每个变量存储在其中的代码,self.var_name
以说明我如何(也许不必要)使用self
.
async def getChampInfo(self, *args):
""" Return play, ban, and win rate for a champ """
self.uri = "http://api.champion.gg/v2/champions/{}?api_key={}"
self.champ = " ".join(args)
self.champID = lu.getChampID(self.champ)
self.res = requests.get(self.uri.format(
self.champID, League.champion_gg_api_key)).json()
self.role = self.res[0]["role"]
self.role_rate = self.res[0]["percentRolePlayed"]
self.play_rate = self.res[0]["playRate"]
self.win_rate = self.res[0]["winRate"]
self.ban_rate = self.res[0]["banRate"]
Run Code Online (Sandbox Code Playgroud)
有些情况下self
不需要使用。
我的头顶上浮现出:
另一个部分答案是,在创建元类/工厂/组合时,像这样的东西可能更有意义,远离使用self
类似的约定:
class Factory(object):
def __init__(cls, *args, **kwargs):
thing = cls(args, kwargs)
Run Code Online (Sandbox Code Playgroud)
我可能会遗漏一些东西,但这些是我目前能想到的。
有关的: