初始化过程中实例的Python alter属性

时间:2019-03-08 16:19:26

标签: python class

是否可以在实例初始化期间更改实例的属性?

E。 G下面的代码。

class Sensor() :
    def __init__(self) :
         self.name = 'pressure' 

Sensor1 = Sensor(name='pH') 

有可能吗?

3 个答案:

答案 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
相关问题