Python中的屬性property
阿新 • • 發佈:2018-12-04
@property
class Animal(object):
def __init__(self, name, age): self._name = name self._age = age self._color = 'Black' @property def name(self): return self._name @name.setter def name(self, value): if isinstance(value, basestring): self._name = value else: self._name = 'No name' @property def age(self): return self._age @age.setter def age(self, value): if value > 0 and value < 100: self._age = value else: self._age = 0 # print 'invalid age value.' @property def color(self): return self._color @color.setter def color(self, value): self._color = value; a = Animal('black dog', 3) a.name = 'white dog' a.age = 300 print 'Name:', a.name print 'Age:', a.age
property函式
它以一個函式形式,定義一個屬性,與@property實現原理類似,或者就是它的的變異用法。
其原型為:
property(fget=None, fset=None, fdel=None, doc=None)
-
class Animal(object): def __init__(self, name, age): self._name = name self._age = age self._color = 'Black' def get_name(self): return self._name def set_name(self, value): if isinstance(value, basestring): self._name = value else: self._name = 'No name' name = property(fget=get_name, fset=set_name, fdel=None, doc='name of an animal') def get_age(self): return self._age def set_age(self, value): if value > 0 and value < 100: self._age = value else: self._age = 0 # print 'invalid age value.' age = property(fget=get_age, fset=set_age, fdel=None, doc='name of an animal') a = Animal('black dog', 3) a.name = 'white dog' a.age = 3 print 'Name:', a.name print Animal.name.__doc__ print 'Age:', a.age