参数太少的初始化类不会引发错误

时间:2019-01-07 15:51:19

标签: python python-3.x class oop

我正在处理一些.py文件,并且其中一个类的开头是这样的:

file1.py

<section id="forside" >
      <div class="container">
            <div class="row">
            </div>
      </div>
</section>

#forside {
    background: url(images/FBIlled.png) no-repeat center center fixed;
    -webkit-background-size: cover;
    -moz-background-size: cover;
    -o-background-size: cover;
    background-size: cover;
}

然后在另一个类中将其初始化为:

file2.py

class SomeClass(object):
    def __init__(self, arg1="A", arg2="B", arg3="C"):

我认为我缺少了一些东西,但看不到什么东西,运行它并仅查看正在发生的事情并不是那么容易。

因此from file1 import SomeClass someinstance = SomeClass("Z") 的init方法包含三个带有默认值的关键字参数,但是在实例化该类时仅给出一个没有关键字的参数。是arg1的默认值,它将被这样实例化的类覆盖吗?

2 个答案:

答案 0 :(得分:1)

您可以检查它是否覆盖了第一个参数

class SomeClass(object):
    def __init__(self, arg1="A", arg2="B", arg3="C"):
        self.arg1=arg1
        self.arg2=arg2
        self.arg3=arg3
        pass
someinstance = SomeClass("Z")#over rides the positional argument
someinstance.arg1

所以应该这样做someinstance = SomeClass(arg3="Z")

答案 1 :(得分:0)

自那时以来,您的课堂上没有positional-argument,这就是为什么它给您带来错误的原因。因此,有两种可能的解决方案,

首先,像这样传递default-argument

someinstance = SomeClass(arg1 = "Z")

someinstance = SomeClass(arg2 = "Z")

someinstance = SomeClass(arg3 = "Z")

第二,解决方案是在您的课堂上制作一个positional-argument

class SomeClass(object):
    def __init__(self, arg, arg1="A", arg2="B", arg3="C"):

现在,您可以像在声明中那样通过了,

someinstance = SomeClass("Z")

现在,它不会给您任何错误。