对于类实例的问题,Python相当新。我有类似
的东西class Headers:
def login_headers(self):
return {
'origin': 'address.com',
'accept-encodig': 'gzip, deflate, br',
'more': '...'
}
在我的主文件中,我导入from headers import Headers
并调用实例并将其分配给变量:
headers = Headers()
但是当我想把字典拿出来时,就像这样:
headers.login_headers
它不会返回字典,而是返回实例本身。
我得到的打印输出是:<bound method Headers.login_headers of <headers.Headers instance at 0x10e1d4488>
为什么不返回字典?
答案 0 :(得分:3)
因为是一种方法。
因为它不可调用,所以使用@property
装饰器使其成为属性。
class Headers:
@property
def login_headers(self):
return {
'origin': 'address.com',
'accept-encodig': 'gzip, deflate, br',
'more': '...'
}
因为它更加pythonic,我建议使用方法并称之为适当
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_headers
,如果您需要继承Headers
课程,则可以覆盖get_login_headers
以匹配可能的更改。
答案 1 :(得分:1)
你错过了方法的parantheses。您将获取方法函数的地址而不是方法本身。请尝试以下方法:
headers.login_headers()
答案 2 :(得分:1)
实际调用 login_headers所需要做的只是:
headers = Headers()
headers.login_headers()
login_headers是一个你已经定义为Headers类子节点的函数,所以你只需要像任何其他函数一样调用它。