Cet article présente principalement l'utilisation de la fonction de propriété en Python et analyse la fonction, les paramètres, l'utilisation et les précautions de fonctionnement associées de la fonction de propriété sous forme d'exemples. Les amis dans le besoin peuvent se référer à ce qui suit
<.>Les exemples de cet article sont expliqués. Apprenez à utiliser la fonction de propriété en Python. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants : Habituellement, lorsque nous accédons et attribuons des attributs, nous traitons directement du de la classe (instance), ou du descripteur de données , etc. . Mais si nous voulons standardiser ces méthodes d'accès et de définition de valeurs, une méthode consiste à introduire un mécanisme de descripteur de données complexe, et l'autre est probablement la fonction légère du protocole de descripteur de données Property(). Sa définition standard est : __dict__
property(fget=None,fset=None,fdel=None,doc=None)
+ Les trois premiers paramètres sont des méthodes non liées, elles peut en fait être n'importe quelle fonction membre de la classe
, __get__
et __set__
dans le descripteur de données. mappage aux descripteurs de données entre eux. __del__
est principalement utilisée pour standardiser l'accès aux attributs de classe et modifier les valeurs des attributs de classe. La fonction property()
peut être appelée avec les paramètres 0, 1, 2, 3 et 4, et l'ordre est get, set, del, doc. Il existe deux façons d'implémenter property()
, voir le code property()
La première façon :
#!/usr/bin/python #coding: utf-8 class Rectangle(object): def __init__(self, width, height): self.width = width self.height = height def getSize(self): return self.width, self.height def setSize(self, size): self.width, self.height = size def delSize(self): del self.height size = property(getSize, setSize, delSize, "实例对象") r = Rectangle(10, 20) # 输出此时矩形的长和宽 # 此时执行的是getSize print r.size # 修改size的值 # 此时执行的是setSize r.size = 100, 200 print r.size del r.height print r.width # height属性已经被删除,下面语句会报错 # print r.size
(10, 20) (100, 200) 100
Deuxième type : (décorateur)
#!/usr/bin/python #coding: utf-8 class Rectangle(object): def __init__(self, width, height): self.width = width self.height = height # 下面加@符号的函数名要相同 # 第一个是get方法 @property def Size(self): return self.width, self.height # 此处是set方法,是@property的副产品 @Size.setter def Size(self, size): # 此时接收的是一个元祖 self.width, self.height = size @Size.deleter def Size(self): del self.width del self.height r = Rectangle(10, 20) print r.Size r.Size = 100, 200 print r.Size del r.height # 由于上一步删除了self.height属性,所以下面再访问的时候会报错 # print r.Size # 可以访问width,还没有被删除 print r.width
(10, 20) (100, 200) 100
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!