zs2*_*020 5 python getter setter
在Python中定义setter和getter的最简单方法是什么?在C#中有类似的东西
public int Prop {get; set;}
Run Code Online (Sandbox Code Playgroud)
怎么做到这样?既然要为这样的属性编写setter和getter方法,那就太多了.
class MyClass():
def foo_get(self):
return self._foo
def foo_set(self, val):
self._foo = val
foo = property(foo_get, foo_set)
Run Code Online (Sandbox Code Playgroud)
提前致谢!
Sve*_*ach 17
如果setter和getter只是访问底层的真实属性,那么实现它们的最简单方法就是不要编写setter和getter.这是标准行为,编写函数重建属性所具有的行为毫无意义.
如果您的访问逻辑稍后更改为与标准访问机制不同的内容,则不需要getter和setter来确保封装,因为引入属性不会破坏您的界面.
Python不是Java.(而不是C#,就此而言.)
通常你根本不写setters/getters.没有必要,因为python不会阻止任何人直接访问属性.但是,如果您需要逻辑,则可以使用propertys
class Foo(object):
def __init__(self, db):
self.db = db
@property
def x(self):
db.get('x')
@x.setter
def x(self, value):
db.set('x', value)
@x.deleter
def x(self):
db.delete('x')
Run Code Online (Sandbox Code Playgroud)
然后,您可以像使用基本属性值一样使用这些属性方法:
foo = Foo(db)
foo.x
foo.x = 'bar'
del foo.x
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7467 次 |
| 最近记录: |