class Camera(object):
def __init__(self, win, x=0.0, y=0.0, rot=0.0, zoom=1.0):
self.win = win
self.x = x
self.y = y
self.rot = rot
self.zoom = zoom
cam = Camera(Window,1,1,1,1)
VS
class Camera(object):
def __init__(self, win, x, y, rot, zoom):
self.win = win
self.x = x
self.y = y
self.rot = rot
self.zoom = zoom
cam = Camera(Window,1,1,1,1)
第一个代码块是否只是使类静态只能在哪里进行而不是用参数调整?如果是这样,那么它的用处是什么?
答案 0 :(得分:1)
第一个和第二个之间的区别是:第一个具有默认值而另一个没有。例如,第一个
cam = Camera(Window)
不会给您一个错误(x=0.0
,y=0.0
,rot=0.0
和zoom=1.0
都有默认的指定值。
但是如果您要创建类cam = Camera(Windows)
的类的新实例,则第二个代码块会给您一个错误。这最终是你的第一个代码块和第二个代码块之间的区别。
干杯!
答案 1 :(得分:1)
第一个代码块只为这些变量设置默认值。当类被初始化时,如果它们被传递给类,那么它们将被设置。否则,类变量将包含默认值。
在第二个代码块中,通过不设置默认值,您将为该类生成所需的参数。
请参阅此问题以获得更好的解释:Why do we use __init__ in python classes?