为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

牧羊人nacy 2021-11-30 16:44:47
是否可以在初始化期间更改实例的属性?E.G 以下代码。class Sensor() :    def __init__(self) :         self.name = 'pressure' Sensor1 = Sensor(name='pH') 那可能吗?
查看完整描述

3 回答

?
米脂

TA贡献1836条经验 获得超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


查看完整回答
反对 回复 2021-11-30
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

不是那样的,如果你想设置属性,你必须做这样的事情:


class Sensor() :

    def __init__(self, name='pressure') :

         self.name = name 


Sensor1 = Sensor(name='pH')

如果未提供名称,则名称将是pressure但如果名称在初始化中给出,它将设置为提供的名称。


查看完整回答
反对 回复 2021-11-30
?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

您需要提供一种方法来传递这些并设置默认值。在您的示例中,您只需要添加一个默认值。


 class Sensor() :

     def __init__(self,name='pressure') :

          self.name = name


查看完整回答
反对 回复 2021-11-30
  • 3 回答
  • 0 关注
  • 157 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信