gpt4 book ai didi

python - 当我尝试使用默认构造函数实例化对象时,为什么会因调用参数化构造函数而收到错误?

转载 作者:行者123 更新时间:2023-12-01 06:41:13 25 4
gpt4 key购买 nike

关于为什么我无法调用默认构造函数有什么想法吗?

这是该类的一小部分,以便您可以看到可用的构造函数和一些数据成员:

class TweetExplorer:

CLEAN_OUTPUT_PATH = constants.CLEAN_OUTPUT_PATH

# Authorization keys
API_KEY = ''
API_SECRET_KEY = ''
ACCESS_TOKEN = ''
ACCESS_TOKEN_SECRET = ''

OUTPUT_PATH = ''

API_ACCESS = 0

def __init__(self):

self.OUTPUT_PATH = constants.OUTPUT_PATH
self.CLEAN_OUTPUT_PATH = constants.OUTPUT_PATH


def __init__(self, api_key, api_secret_key, access_token, access_token_secret):

self.API_KEY = api_key
self.API_SECRET_KEY = api_secret_key
self.ACCESS_TOKEN = access_token
self.ACCESS_TOKEN_SECRET = access_token_secret

try:
self.check_access()
except Exception as ex:
print(ex)

self.OUTPUT_PATH = constants.OUTPUT_PATH

因此,在同一个文件中,我尝试使用默认构造函数实例化该类的实例:

if __name__ == '__main__':

explorer = TweetExplorer()

我没有调用默认构造函数,而是收到以下错误:

Message=init() missing 4 required positional arguments: 'api_key', 'api_secret_key', 'access_token', and 'access_token_secret' Source=C:\source\repos\TweetExplorer\TweetExplorer.py StackTrace: File "C:\source\repos\TweetExplorer\TweetExplorer.py", line 499, in explorer = TweetExplorer()

最佳答案

我之前用于提供多个构造函数的模式是使用classmethods:

class TweetExplorer:

CLEAN_OUTPUT_PATH = constants.CLEAN_OUTPUT_PATH
API_ACCESS = 0

def __init__(self):
self.OUTPUT_PATH = constants.OUTPUT_PATH
self.CLEAN_OUTPUT_PATH = constants.OUTPUT_PATH
self.API_KEY = ''
self.API_SECRET_KEY = ''
self.ACCESS_TOKEN = ''
self.ACCESS_TOKEN_SECRET = ''

@classmethod
def with_credentials(cls, api_key, api_secret_key, access_token, access_token_secret):
obj = cls()

obj.API_KEY = api_key
obj.API_SECRET_KEY = api_secret_key
obj.ACCESS_TOKEN = access_token
obj.ACCESS_TOKEN_SECRET = access_token_secret

try:
obj.check_access()
except Exception as ex:
print(ex)

return obj

现在您可以初始化 TweetExplorer 而不需要任何参数

TweetExplorer()

或者用信用

TweetExplorer.with_credentials(api_key, api_secret_key, access_token, access_token_secret)

关于python - 当我尝试使用默认构造函数实例化对象时,为什么会因调用参数化构造函数而收到错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59449588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com