我正在处理一些.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的默认值,它将被这样实例化的类覆盖吗?
答案 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")
现在,它不会给您任何错误。