Python 类方法不返回字典,而是返回实例本身
对于Python来说,这是一个相当新的问题,涉及到类实例。我有点像Python 类方法不返回字典,而是返回实例本身,python,Python,对于Python来说,这是一个相当新的问题,涉及到类实例。我有点像 class Headers: def login_headers(self): return { 'origin': 'address.com', 'accept-encodig': 'gzip, deflate, br', 'more': '...' } 在我的主文件中,我正在导入from headers import headers,并调用一个实例并将其分配给一个变量
class Headers:
def login_headers(self):
return {
'origin': 'address.com',
'accept-encodig': 'gzip, deflate, br',
'more': '...'
}
在我的主文件中,我正在导入from headers import headers
,并调用一个实例并将其分配给一个变量:
headers=headers()
但是当我想把字典拿出来时,它是这样的:
headers.login\u headers
它不返回字典,而是返回实例本身
我得到的打印输出是:
您缺少方法的parantises。您得到的是方法函数的地址,而不是方法本身。请尝试以下操作:
headers.login_headers()
因为这是一种方法
为使其不可调用,请使用decorator使其成为属性
class Headers:
@property
def login_headers(self):
return {
'origin': 'address.com',
'accept-encodig': 'gzip, deflate, br',
'more': '...'
}
为了让它更具python风格,我建议使用这个方法并称之为合适的方法
class Headers:
def __init__(self):
self.login_headers = {
'origin': 'address.com',
'accept-encodig': 'gzip, deflate, br',
'more': '...'
}
def get_login_headers(self):
return self.login_headers
headers = Headers()
headers.get_login_headers()
在实例初始化中,您将指定login\u headers
的默认值,如果您需要继承headers
类,您可以覆盖get\u login\u headers
,以匹配可能的更改。实际调用login\u headers需要做的只是:
headers = Headers()
headers.login_headers()
login_headers是您定义为headers类的子函数,因此您只需像调用任何其他函数一样调用它。来自Ruby世界,这是我一直关注的问题。@property
是某种神奇的Python装饰器吗?该方法的行为是否与我执行.login\u headers()
时的行为相同?不,在检索值时不需要调用它,它是某种惰性的求值属性。这有任何缺点,我不想让自己养成坏习惯。使用@property
很好,还是我应该用()
@supersize调用该方法?我已经用更具python风格的方式更新了答案。谢谢,我完全忽略了这一点