繁体   English   中英

Python Class & Class 实例化显示了一个非常奇怪的行为

[英]Python Class & Class Instantiation shows a very weird behavior

我目前正在为 Snapchat 广告编写 API 连接器。 我写了一个 class。 但是,在测试时,我看到了不寻常的行为。 下面的代码说明了这种行为。 使用 3.7 版

import requests
from requests_oauthlib import OAuth2Session
import datetime as dt

class SnapchatAPI(object):   
    def __int__(self, client_id, client_secret, org_id):
        self.client_id = client_id
        self.client_secret = client_secret
        self.org_id = org_id

比如上面是class的声明。 当我运行它并尝试在没有参数的情况下实例化它时。 它仍然有效。[它不应该。 但确实如此]。 我无法弄清楚为什么SnapchatAPI()没有提高和 Error 就可以工作

extractor = SnapchatAPI()

但是,在试图弄清楚我回到简单的 class 时,如下所示来检查行为

class Person(object):
    def __init__(self, firstname, lastname, address):
        self.firstname = firstname
        self.lastname = lastname
        self.address = address 

当我尝试在没有参数的情况下实例化它时。 它引发了一个错误。 这是我所期望的

john_doe = Person()
Traceback (most recent call last):
  File "<pyshell>", line 1, in <module>
TypeError: __init__() missing 3 required positional arguments: 'firstname', 'lastname', and 'address'

想不通为什么!

如果您发布的内容正是您的脚本中的内容,那么它就是一个简单的错字。 您已经定义__int__而不是__init__ 当 class 没有被赋予__init__()方法时,它会从object()继承__init__我相信。 这不带任何参数,因此无需您显式定义__init__方法即可工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM