是否可以在实例初始化期间更改实例的属性?
E。 G下面的代码。
class Sensor() :
def __init__(self) :
self.name = 'pressure'
Sensor1 = Sensor(name='pH')
有可能吗?
答案 0 :(得分:3)
您需要明确声明接受name
参数,然后需要明确更新相应的属性:
class Sensor():
def __init__(self, name='pressure'):
self.name = name
请注意,如果消费者未提供'pressure'
参数,我将使用name
作为默认值:
a = Sensor()
print(a.name) # 'pressure'
b = Sensor(name='sensor')
print(b.name) # 'sensor'
name
也可以作为位置参数提供:
c = Sensor('some_name')
print(c.name) # 'some_name'
还有一种更通用的方法(如果用例需要),它涉及动态创建属性:
class Sensor():
def __init__(self, **kwargs):
for attr, value in kwargs.items():
setattr(self, attr, value)
然后您可以执行以下操作:
d = Sensor(name='foo', temperature=70, active=True)
print(d.name) # 'foo'
print(d.temperature) # 70
print(d.active) # True
答案 1 :(得分:2)
不是那样,如果要设置属性,则必须执行以下操作:
class Sensor() :
def __init__(self, name='pressure') :
self.name = name
Sensor1 = Sensor(name='pH')
如果未提供,名称将为pressure
,但如果在初始化中给出名称,它将被设置为提供的名称。
答案 2 :(得分:1)
您将需要提供一种传递这些值并设置默认值的方法。在您的示例中,您只需要添加一个默认值即可。
class Sensor() :
def __init__(self,name='pressure') :
self.name = name