python - Python 在初始化期间更改实例的属性
问题描述
是否可以在初始化期间更改实例的属性?
E.G 下面的代码。
class Sensor() :
def __init__(self) :
self.name = 'pressure'
Sensor1 = Sensor(name='pH')
那可能吗?
解决方案
您需要明确声明您接受一个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
推荐阅读
- azure - 将大型 TFS 集合导入 Azure DevOps 后是否需要 Azure SQL VM?
- kubernetes - kubectl apply -f service.yml 抛出错误
- c - 通过 x11 中的抓取窗口记录事件
- ethereum - 以太坊智能合约。我可以屏蔽/隐藏合同创建者地址吗?如果可以,我需要吗?
- python - 根据索引的字典/映射替换熊猫列中的值
- matlab - 优化涉及 for 循环的 matlab 代码
- python - 如何计算 Python 3 中字典字典中特定值的次数
- flutter - 在 Flutter 中使用控制器设置文本时 TextField 光标不移动
- python-3.x - 为什么在尝试使用 PyPDF2 进行“水印”时,此代码不能按“预期”工作?
- php - html中带有选项卡的PHP标头位置