📜  Python属性()函数(1)

📅  最后修改于: 2023-12-03 14:46:44.314000             🧑  作者: Mango

Python 属性() 函数

在 Python 中,属性() 函数用于返回一个对象的属性值。这个函数比直接访问对象的属性更加灵活,可以根据自己的需要进行一些处理或操作,一些常用的处理包括对属性的取整、进行字符串处理等。

语法

属性() 函数的语法如下:

property(fget=None, fset=None, fdel=None, doc=None)

参数说明:

  • fget:用于获取属性的方法。
  • fset:用于设置属性的方法。
  • fdel:用于删除属性的方法。
  • doc:属性的描述信息。
示例

下面,我们来看一个简单的示例,演示如何使用属性() 函数:

class Student:
     def __init__(self, name, score):
         self._name = name
         self._score = score

     @property
     def name(self):
         return self._name

     @name.setter
     def name(self, value):
         if not isinstance(value, str):
             raise TypeError('name must be a string!')
         self._name = value

     @property
     def score(self):
         return self._score

     @score.setter
     def score(self, value):
         if not isinstance(value, int):
             raise TypeError('score must be an integer!')
         if value < 0 or value > 100:
             raise ValueError('score must be between 0 and 100!')
         self._score = value

if __name__ == '__main__':
    s = Student('John', 90)
    print(s.name)  # John
    s.name = 'Tom'
    print(s.name)  # Tom
    print(s.score)  # 90
    s.score = 80
    print(s.score)  # 80

在上面的示例中,我们定义了一个名叫 Student 的类,并声明了两个属性 namescore。我们使用 @property 装饰器将其转换为属性函数,从而达到对属性的更加灵活的控制。我们可以直接使用属性名访问属性值,也可以对属性进行赋值和删除操作。

注意事项
  • 如果只定义了 fget,则对象为只读属性。
  • 如果只定义了 fset,则对象为只写属性。
  • 如果只定义了 fdel,则对象为不可删除属性。
  • 在使用 @property 装饰器定义属性函数时,函数名必须与属性名相同。