Je suis une personne qui écrit du code en python
Cependant, comme je suis encore débutant, je m'ennuie souvent des erreurs. Parmi eux, j'écris cette fois avec l'intention de réapprendre les setters et les getters de la classe que j'ai laissés flous jusqu'à présent. Allons-y!
python 3.7.4
Il y a des moments où vous voulez obtenir ce que la classe a généré. Que feriez-vous dans un tel cas?
practice01.py
class C(object):
def __init__(self) -> None:
self.x = 1
c = C()
r = c.x
print(r)
# 1
C'est facile à écrire. Mais si vous voulez utiliser @property ou quelque chose comme ça
practice02.py
class C(object):
def __init__(self) -> None:
self.x = 1
@property
def x(self):
if self.x is None:
return None
return self.x
c = C()
r = c.x
print(r)
# AttributeError: can't set attribute
Oui, j'ai ʻAttributeError: can't set attribute`. Donc, je voudrais d'abord présenter une solution.
practice03.py
class C(object):
def __init__(self) -> None:
self._x = 1
@property
def x(self):
if self._x is None:
return None
return self._x
c = C()
r = c.x
print(r)
# 1
Alors pourquoi «practice02.py» ne fonctionne-t-il pas?
C'est parce que le nom de la variable et le nom de la fonction correspondent. En d'autres termes, si vous donnez la variable comme self._x
comme practice03.py
, c'est sûr car __le nom de la variable et le nom de la fonction sont différents __.
Et en pratique03.py
getter.py
@property
def x(self):
if self._x is None:
return None
return self._x
Cette partie s'appelle un getter!
Dans le cas d'un article simple comme cet article, je pense qu'il est plus facile à comprendre si vous l'écrivez sans utiliser de getter ou de setter. Je pense qu'il est en fait utilisé lorsque vous voulez traiter une méthode qui existe dans la classe __ comme un attribut __.
Il y a un article très utile, alors je vais y faire référence.
Je ne comprends pas la nécessité de la propriété python3.
Comme vous pouvez le voir dans cet article, les getters et les setters sont probablement l'une des techniques / techniques utilisées lorsque vous souhaitez faciliter la compréhension. ~~ En d'autres termes, c'est une humeur. ~~ Si vous pouvez bien l'utiliser, vous pourrez écrire un code plus propre et plus facile à comprendre! !! Je ferai de mon mieux pour étudier afin que je puisse bien l'utiliser!
Quelqu'un a écrit quelque chose de facile à comprendre dans la section des commentaires, alors jetez-y également un œil!
Puis!
Recommended Posts