在python中初始化默认参数
如果我创建一个名为Car的类在python中初始化默认参数,python,oop,Python,Oop,如果我创建一个名为Car的类 class Car(): '''car information summary''' def __init__(self, make, model, year): self.make = make self.model = model self.year = year self.odometer = 0 我了解到,self.odometer=0允许我创建一个新实例,而无需输入里程表的值
class Car():
'''car information summary'''
def __init__(self, make, model, year):
self.make = make
self.model = model
self.year = year
self.odometer = 0
我了解到,self.odometer=0
允许我创建一个新实例,而无需输入里程表的值。每个新实例都将以0处的里程表读数开始
但是,如果我想创建一个具有指定里程表读数的新实例,该怎么办
car_1 = Car('Audi', 'S4', '2017', 5000)
它不允许我这样做。我想做的是把它当作一个函数的默认值来使用:你不必给出一个值,因为有一个默认值,但是当你这样做的时候,你可以覆盖默认值
我知道我可以在以后修改属性,或者编写一个方法来更改属性。但这不是我现在关心的问题
对于OOP来说,这是一个错误的想法吗?Python支持的概念是。您可以编写一个参数,如果未指定,则为其指定一个默认值。在这种情况下,它看起来像:
class Car():
'''car information summary'''
def __init__(self, make, model, year, odometer=0):
self.make = make
self.model = model
self.year = year
self.odometer = odometer
然后Python将只计算一次[]
。每次不为x
提供值时,您将获得对同一列表的引用(而不是每次新列表)
因此,使用可变类型通常是危险的(一个int
不是可变类型,所以我们对里程表=0
是安全的)
例如,如果我们在f()
的结果中附加(3),那么从现在开始,f()
将返回该列表([3]
)。这通常不是预期的效果。如果使用可变对象,某些IDE会发出警告
如果每次未提供x
时都需要一个新的空列表,则常见模式为:
def f(x=None):
if x is None:
x = []
return x
def(x=None):
如果x为无:
x=[]
return x
Python支持。您可以编写一个参数,如果未指定,则为其指定一个默认值。在这种情况下,它看起来像:
class Car():
'''car information summary'''
def __init__(self, make, model, year, odometer=0):
self.make = make
self.model = model
self.year = year
self.odometer = odometer
然后Python将只计算一次[]
。每次不为x
提供值时,您将获得对同一列表的引用(而不是每次新列表)
因此,使用可变类型通常是危险的(一个int
不是可变类型,所以我们对里程表=0
是安全的)
例如,如果我们在f()
的结果中附加(3),那么从现在开始,f()
将返回该列表([3]
)。这通常不是预期的效果。如果使用可变对象,某些IDE会发出警告
如果每次未提供x
时都需要一个新的空列表,则常见模式为:
def f(x=None):
if x is None:
x = []
return x
def(x=None):
如果x为无:
x=[]
return x
明白了!!谢谢你能举例说明最后一句话吗?我不知道这到底意味着什么,加油!!谢谢你能举例说明最后一句话吗?我不知道这到底意味着什么