Īpašuma () konstrukcija atgriež īpašuma atribūtu.
Sintakse property()ir:
rekvizīts (fget = nav, fset = nav, fdel = nav, doc = nav)
Ieteicamā literatūra: Python @property: Kā to izmantot un kāpēc?
rekvizīts () parametri
Tam property()nepieciešami četri izvēles parametri:
- fget (pēc izvēles) - funkcija atribūta vērtības iegūšanai. Pēc noklusējuma
None. - fset (pēc izvēles) - funkcija atribūta vērtības iestatīšanai. Pēc noklusējuma
None. - fdel (pēc izvēles) - funkcija atribūta vērtības dzēšanai. Pēc noklusējuma
None. - doc (pēc izvēles) - virkne, kas satur atribūta dokumentāciju (docstring). Pēc noklusējuma
None.
Atgriešanās vērtība no īpašuma ()
property() atgriež rekvizīta atribūtu no norādītā getter, setter un deleter.
- Ja netiek doti argumenti,
property()atgriež bāzes rekvizīta atribūtu, kurā nav ne getter, ne setera, ne deleter. - Ja dokuments nav norādīts,
property()tiek izmantota getter funkcijas docstring.
1. piemērs: izveidojiet atribūtu ar getter, setter un deleter
class Person: def __init__(self, name): self._name = name def get_name(self): print('Getting name') return self._name def set_name(self, value): print('Setting name to ' + value) self._name = value def del_name(self): print('Deleting name') del self._name # Set property to use get_name, set_name # and del_name methods name = property(get_name, set_name, del_name, 'Name property') p = Person('Adam') print(p.name) p.name = 'John' del p.name
Rezultāts
Nosaukuma iegūšana Vārds ir: Ādams Nosaka vārdu uz Džons Dzēšot vārdu
Šeit _name tiek izmantots kā privāts mainīgais personas vārda glabāšanai.
Mēs arī iestatījām:
- labāka metode
get_name()personas vārda iegūšanai, - setera metode
set_name()personas vārda iestatīšanai, - deleter metode
del_name()personas vārda dzēšanai.
Tagad, nosaucot property()metodi , mēs iestatījām jaunu rekvizīta atribūta nosaukumu .
Kā parādīts programmā, p.nameiekšējā atsauce uz metodēm esošajā drukātajā izvadā tiek izsaukta get_name()kā getter, kā seter set_name()un del_name()kā deleter.
2. piemērs: @property dekoratora izmantošana
Tā vietā, lai izmantotu property(), varat izmantot Python dekoratoru, @propertylai piešķirtu getter, seteri un deleter.
class Person: def __init__(self, name): self._name = name @property def name(self): print('Getting name') return self._name @name.setter def name(self, value): print('Setting name to ' + value) self._name = value @name.deleter def name(self): print('Deleting name') del self._name p = Person('Adam') print('The name is:', p.name) p.name = 'John' del p.name
Rezultāts
Nosaukuma iegūšana Vārds ir: Ādams Nosaka vārdu uz Džons Dzēšot vārdu
Šeit tā vietā, lai izmantotu property(), mēs izmantojām @propertydekoratoru.
Pirmkārt, mēs precizējam, ka name()metode ir arī Personas atribūts. Tas tiek darīts, izmantojot @propertypirms getter metodi, kā parādīts programmā.
Pēc tam mēs izmantojam atribūta nosaukumu, lai norādītu iestatītāju un dzēšamo elementu.
To veic, izmantojot @name.settersetera metodi un @name.deleterdeleter metodi.
Ievērojiet, name()ka getter, setter un deleter definēšanai mēs izmantojām to pašu metodi ar dažādām definīcijām.
Tagad, kad mēs to izmantojam p.name, tas iekšēji izsauc atbilstošo getter, setter un deleter, kā parādīts metodē esošajā drukātajā izvadā.








