这是一个Python特有的设计问题:
class MyClass(object):
...
def get_my_attr(self):
...
def set_my_attr(self, value):
...
和
class MyClass(object):
...
@property
def my_attr(self):
...
@my_attr.sette
def my_attr(self, value):
...
Python可以让我们做到这一点。如果如果要设计一个Python程序,你会使用哪种方法,为什么?
在Python有很多方法(要做到这一点getattr,setattr,__getattribute__,等等,但一个非常简洁和干净的一个是:
def set_email(self, value):
if '@' not in value:
raise Exception("This doesn't look like an email address.")
self._email = value
def get_email(self):
return self._email
email = property(get_email, set_email)
Python中,您不使用getter或setter或属性仅仅为了它的乐趣。您首先只使用属性,然后再使用,最后只需要,最终迁移到一个属性,而不必使用类更改代码。
确实有很多扩展名为.py的代码,它们使用getter和setter以及继承和无意义的类,例如一个简单的元组可以完成,但是它是使用Python编写C ++或Java的人的代码。
相似问题