APo*_*031 8 python properties getter-setter
我正在编写一个python类来存储数据,然后另一个类将创建该类的实例来打印不同的变量.某些类变量需要大量格式化,这可能需要多行代码才能使其处于"最终状态".
使用这种结构从类外部访问变量是不好的做法吗?
class Data():
def __init__(self):
self.data = "data"
Run Code Online (Sandbox Code Playgroud)
或者使用@property方法访问变量是否更好?
class Data:
@property
def data(self):
return "data"
Run Code Online (Sandbox Code Playgroud)
如果你这样做,要小心:
class Data:
@property
def data(self):
return "data"
d = Data()
d.data = "try to modify data"
Run Code Online (Sandbox Code Playgroud)
会给你错误:
AttributeError:无法设置属性
正如我在您的问题中看到的那样,您希望能够将数据转换为最终状态,因此,请选择其他选项
class Data2():
def __init__(self):
self.data = "data"
d2 = Data2()
d2.data = "now I can be modified"
Run Code Online (Sandbox Code Playgroud)
或修改previus:
class Data:
def __init__(self):
self._data = "data"
@property
def data(self):
return self._data
@data.setter
def data(self, value):
self._data = value
d = Data()
d.data = "now I can be modified"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4380 次 |
| 最近记录: |