Python 在初始化期间更改实例的属性

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


E.G 以下代码。


class Sensor() :

    def __init__(self) :

         self.name = 'pressure' 


Sensor1 = Sensor(name='pH') 

那可能吗?


牧羊人nacy
浏览 159回答 3
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) # 70print(d.active)      # True

天涯尽头无女友

不是那样的,如果你想设置属性,你必须做这样的事情:class Sensor() :    def __init__(self, name='pressure') :         self.name = name Sensor1 = Sensor(name='pH')如果未提供名称,则名称将是pressure但如果名称在初始化中给出,它将设置为提供的名称。

慕田峪9158850

您需要提供一种方法来传递这些并设置默认值。在您的示例中,您只需要添加一个默认值。 class Sensor() :     def __init__(self,name='pressure') :          self.name = name
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python