Python - Programmation orientée objet - méthode magique (méthode de double soulignement)

python programmation orient objet thode


Quelle est la méthode magique

InPythonMoyenne,Tous avec __ La méthode du double soulignement,Sont collectivement appelés Magic Method Méthode magique,Aussi appelé double soulignement

Quelles sont les méthodes magiques importantes?

__new__

https://www.cnblogs.com/poloyy/p/15236309.html

__init__

https://www.cnblogs.com/poloyy/p/15189562.html

__str__

https://www.cnblogs.com/poloyy/p/15202541.html

__repr__

https://www.cnblogs.com/poloyy/p/15250973.html

__del__

https://www.cnblogs.com/poloyy/p/15192098.html

__call__

https://www.cnblogs.com/poloyy/p/15253366.html

Autres méthodes magiques plus courantes

__len__

len() L'objet d'appel renvoie __len__ Méthodes return Valeur de,Doit revenir integer

class A:
def __len__(self):
return 4
a = A()
print(len(a))
# Résultats obtenus
4

__hash__

hash() L'objet d'appel renvoie __hash__ Méthodes return Valeur de,Doit revenir integer

# __hash__
class A:
def __hash__(self):
return 123456
a = A()
print(hash(a))
# Résultats obtenus
123456

__eq__

Définir le comportement du signe égal :x == y

class A:
def __init__(self):
self.a = 1
self.b = 2
def __eq__(self, obj):
print("call eq method.")
if self.a == obj.a and self.b == obj.b:
return True
a = A()
b = A()
# L'objet instance a == Quand on agit ,Appel automatique __eq__() Méthodes
print(a == b)
# Résultats obtenus
call eq method.
True

Méthode magique de comparaison des opérateurs

__lt__(self, other)

Définir un comportement inférieur au signe :x < y Appelez x.__lt__(y)

__le__(self, other)

Définir un comportement inférieur ou égal à un signe :x <= y Appelez x.__le__(y)

__ne__(self, other)

Définir le comportement des signes d'inégalité :x != y Appelez x.__ne__(y)

__gt__(self, other)

Définir un comportement supérieur au signe :x > y Appelez x.__gt__(y)

__ge__(self, other)

Définir un comportement supérieur ou égal au signe :x >= y Appelez x.__ge__(y)

Les méthodes magiques sont parfaites

Méthode magique

Sens

Les méthodes magiques de base

__new__(cls[, ...])

1. __new__ Est la première méthode appelée lorsqu'un objet est instantané

__init__(self[, ...])

Constructeur, Méthode d'initialisation appelée lorsqu'une instance est créée

__del__(self)

Analyseur, Méthode appelée lorsqu'une instance est détruite

__call__(self[, args...])

Permettre à une instance d'une classe d'être appelée comme une fonction :x(a, b) Appelez x.__call__(a, b)

__len__(self)

Définir quand len() Comportement au moment de l'appel

__repr__(self)

Définir quand repr() Comportement au moment de l'appel

__str__(self)

Définir quand str() Comportement au moment de l'appel

__bytes__(self)

Définir quand bytes() Comportement au moment de l'appel

__hash__(self)

Définir quand hash() Comportement au moment de l'appel

__bool__(self)

Définir quand bool() Comportement au moment de l'appel ,Ça devrait revenir True Ou False

__format__(self, format_spec)

Définir quand format() Comportement au moment de l'appel

Pour les propriétés

__getattr__(self, name)

Définit le comportement d'un utilisateur lorsqu'il tente d'obtenir une propriété qui n'existe pas

__getattribute__(self, name)

Définit le comportement des propriétés de cette classe lorsqu'elles sont accessibles

__setattr__(self, name, value)

Définit le comportement lorsqu'une propriété est définie

__delattr__(self, name)

Définir le comportement lorsqu'un attribut est supprimé

__dir__(self)

Définir quand dir() Comportement au moment de l'appel

__get__(self, instance, owner)

Définit le comportement d'un descripteur lorsqu'une valeur est obtenue

__set__(self, instance, value)

Définit le comportement du descripteur lorsque sa valeur est modifiée

__delete__(self, instance)

Définit le comportement lorsque la valeur du descripteur est supprimée

Comparer les opérateurs

__lt__(self, other)

Définir un comportement inférieur au signe :x < y Appelez x.__lt__(y)

__le__(self, other)

Définir un comportement inférieur ou égal à un signe :x <= y Appelez x.__le__(y)

__eq__(self, other)

Définir le comportement du signe égal :x == y Appelez x.__eq__(y)

__ne__(self, other)

Définir le comportement des signes d'inégalité :x != y Appelez x.__ne__(y)

__gt__(self, other)

Définir un comportement supérieur au signe :x > y Appelez x.__gt__(y)

__ge__(self, other)

Définir un comportement supérieur ou égal au signe :x >= y Appelez x.__ge__(y)

Opérateur arithmétique

__add__(self, other)

Définir le comportement de l'addition :+

__sub__(self, other)

Définir l'acte de soustraction :-

__mul__(self, other)

Définir le comportement de multiplication :*

__truediv__(self, other)

Définir le comportement de la Division réelle :/

__floordiv__(self, other)

Définir le comportement de la Division des entiers ://

__mod__(self, other)

Définir le comportement de l'algorithme de récupération de modèle :%

__divmod__(self, other)

Définir quand divmod() Comportement au moment de l'appel

__pow__(self, other[, modulo])

Définir quand power() Appelé ou ** Comportement au moment de l'opération

__lshift__(self, other)

Définir le comportement du déplacement à gauche par bit :<<

__rshift__(self, other)

Définir le comportement du déplacement à droite par bit :>>

__and__(self, other)

Définir le comportement des bits et des opérations :&

__xor__(self, other)

Définir le comportement d'une opération Xor bitwise :^

__or__(self, other)

Définir le comportement par bit ou opération :|

Opération inverse

__radd__(self, other)

( Comme ci - dessus , Appelé lorsque l'opérande gauche ne supporte pas l'opération correspondante )

__rsub__(self, other)

( Comme ci - dessus , Appelé lorsque l'opérande gauche ne supporte pas l'opération correspondante )

__rmul__(self, other)

( Comme ci - dessus , Appelé lorsque l'opérande gauche ne supporte pas l'opération correspondante )

__rtruediv__(self, other)

( Comme ci - dessus , Appelé lorsque l'opérande gauche ne supporte pas l'opération correspondante )

__rfloordiv__(self, other)

( Comme ci - dessus , Appelé lorsque l'opérande gauche ne supporte pas l'opération correspondante )

__rmod__(self, other)

( Comme ci - dessus , Appelé lorsque l'opérande gauche ne supporte pas l'opération correspondante )

__rdivmod__(self, other)

( Comme ci - dessus , Appelé lorsque l'opérande gauche ne supporte pas l'opération correspondante )

__rpow__(self, other)

( Comme ci - dessus , Appelé lorsque l'opérande gauche ne supporte pas l'opération correspondante )

__rlshift__(self, other)

( Comme ci - dessus , Appelé lorsque l'opérande gauche ne supporte pas l'opération correspondante )

__rrshift__(self, other)

( Comme ci - dessus , Appelé lorsque l'opérande gauche ne supporte pas l'opération correspondante )

__rand__(self, other)

( Comme ci - dessus , Appelé lorsque l'opérande gauche ne supporte pas l'opération correspondante )

__rxor__(self, other)

( Comme ci - dessus , Appelé lorsque l'opérande gauche ne supporte pas l'opération correspondante )

__ror__(self, other)

( Comme ci - dessus , Appelé lorsque l'opérande gauche ne supporte pas l'opération correspondante )

Opération d'affectation progressive

__iadd__(self, other)

Définir le comportement de l'addition d'affectation :+=

__isub__(self, other)

Définir le comportement de la soustraction d'affectation :-=

__imul__(self, other)

Définir le comportement de la multiplication des assignations :*=

__itruediv__(self, other)

Définir le comportement de la Division de vérité assignée :/=

__ifloordiv__(self, other)

Définir le comportement de la Division des entiers d'affectation ://=

__imod__(self, other)

Définir le comportement de l'algorithme de prise de module d'assignation :%=

__ipow__(self, other[, modulo])

Définir le comportement d'une opération de puissance assignée :**=

__ilshift__(self, other)

Définir le comportement d'une affectation décalée à gauche :<<=

__irshift__(self, other)

Définit le comportement de déplacement à droite d'une affectation :>>=

__iand__(self, other)

Définir le comportement des bits d'affectation et des opérations :&=

__ixor__(self, other)

Définir le comportement de l'attribution d'une Xor bitwise :^=

__ior__(self, other)

Définir le comportement de l'assignation de bits ou d'actions :|=

Opérateur unique

__pos__(self)

Définir le comportement du signe positif :+x

__neg__(self)

Définir le comportement du signe négatif :-x

__abs__(self)

Définir quand abs() Comportement au moment de l'appel

__invert__(self)

Définir l'inverse bitwise :~x

Conversion de type

__complex__(self)

Définir quand complex() Comportement au moment de l'appel ( Une valeur appropriée doit être retournée )

__int__(self)

Définir quand int() Comportement au moment de l'appel ( Une valeur appropriée doit être retournée )

__float__(self)

Définir quand float() Comportement au moment de l'appel ( Une valeur appropriée doit être retournée )

__round__(self[, n])

Définir quand round() Comportement au moment de l'appel ( Une valeur appropriée doit être retournée )

__index__(self)

1. Lorsque l'objet est appliqué à une expression de tranche , Mise en œuvre de la force de façonnage 2. Si vous définissez un type numérique personnalisé qui peut être utilisé lors de la découpe , Tu devrais définir __index__3. Si __index__ Défini ,Et __int__ Doit également être défini , Et renvoie la même valeur

Gestion du contexte(with Déclarations)

__enter__(self)

1. Définir quand with Comportement d'initialisation Au moment de l'instruction 2. __enter__ La valeur de retour de with Le but de la déclaration ou as Le nom suivant est lié

__exit__(self, exc_type, exc_value, traceback)

1. Définir ce que le gestionnaire de contexte doit faire lorsqu'un bloc de code est exécuté ou terminé 2. Généralement utilisé pour traiter les exceptions , Nettoyer le travail ou faire le travail quotidien après l'exécution du bloc de code

Type de conteneur

__len__(self)

Définir quand len() Comportement au moment de l'appel (Renvoie le nombre d'éléments dans le conteneur)

__getitem__(self, key)

Définir le comportement pour obtenir l'élément spécifié dans le conteneur ,équivalent à self[key]

__setitem__(self, key, value)

Définit le comportement de l'élément spécifié dans le conteneur de configuration ,équivalent à self[key] = value

__delitem__(self, key)

Définit le comportement de suppression d'un élément spécifié dans un conteneur ,équivalent à del self[key]

__iter__(self)

Définit le comportement d'un élément lorsqu'il est itéré dans un conteneur

__reversed__(self)

Définir quand reversed() Comportement au moment de l'appel

__contains__(self, item)

Définir lorsque l'opérateur de test membre est utilisé (in Ou not in)Le comportement du temps

Revenez en arrière et expliquez ce que

Participation à cet articleTencent Cloud Self - media Sharing Plan,Bienvenue à la lecture,Partager ensemble.

版权声明
本文为[Notes de test pour les petits ananas]所创,转载请带上原文链接,感谢
https://pythonmana.com/2021/09/20210914180056945y.html

  1. 程序員是這樣學習【中藥學】知識的,先用python采集分析一波
  2. Python - pydantic(2)嵌套模型
  3. Python - 面向对象编程 - __dict__
  4. Python - 面向对象编程 - 反射 hasattr、getattr、getattr、delattr
  5. Python - 面向对象编程 - 实战(6)
  6. Python - 面向对象编程 - 魔术方法(双下划线方法)
  7. Python - 面向对象编程 - __new__() 和单例模式
  8. Python - 面向对象编程 - __call__()
  9. Python - repr()、str() 的区别
  10. Python - 面向对象编程 - __repr__()
  11. Python - eval()
  12. 用 Django REST framework 来实现一次性验证码(OTP)
  13. Python code checking tool (static code review)
  14. Python QT GUI Design: overview of UI interface visualization components and properties (Fundamentals - 3)
  15. 【算法学习】1863. 找出所有子集的异或总和再求和(java / c / c++ / python / go / rust)
  16. [apprentissage de l'algorithme] 1863. Trouver la somme Xor de tous les sous - ensembles (Java / C / C + + / python / go / Rust)
  17. Python code checking tool (static code review)
  18. Python 万能代码模版:爬虫代码篇
  19. Modèle de code universel Python: Code crawler
  20. 收藏 | Python 之 Pandas系统性总结!
  21. Take you to learn more about nginx basic login authentication: generating passwords using Python
  22. 超硬核Python避坑学习方案奉上!入门到就业一篇就搞定!
  23. Talk about how JMeter executes Python scripts concurrently
  24. Talk about how JMeter executes Python scripts concurrently
  25. Talk about how JMeter executes Python scripts concurrently
  26. python内置函数通过字符串的方式来执行函数代码块,类似java的反射机制相当强大!
  27. python内置函数通过字符串的方式来执行函数代码块,类似java的反射机制相当强大!
  28. python內置函數通過字符串的方式來執行函數代碼塊,類似java的反射機制相當强大!
  29. Les fonctions intégrées Python exécutent des blocs de code de fonction à travers des chaînes, et les mécanismes de réflexion comme Java sont assez puissants!
  30. Python module 1
  31. Python tip: use namedtuple instead of manually created classes
  32. Python - poetry(3)配置项详解
  33. Python - poetry(3)配置项详解
  34. Python - poetry(3)配置項詳解
  35. Python - poetry(3)配置項詳解
  36. Python - détails de l'élément de configuration Poetry (3)
  37. Python - détails de l'élément de configuration Poetry (3)
  38. Python案例实战,pygame模块,Python实现字母代码雨
  39. Python calculation vector angle code
  40. Python基础面试题解读|《Python面试100层》|第1层
  41. 面对小白的pandas命令手册+练习题【三万字详解】
  42. 面對小白的pandas命令手册+練習題【三萬字詳解】
  43. Face au Manuel de commande pandas de Xiaobai + question d'exercice [30 000 mots pour plus de détails]
  44. Interprétation des questions d'entrevue de base Python | 100 couches d'entrevue Python | couche 1
  45. Python data structure and algorithm (17) -- merge sort
  46. Les fonctions intégrées Python exécutent des blocs de code de fonction à travers des chaînes, et les mécanismes de réflexion comme Java sont assez puissants!
  47. Python笔记-uiautomator2截图点击,OpenCV找图
  48. Python文档阅读笔记-OpenCV中Template Matching
  49. Python笔记-利用OpenCV的matchTemplate屏幕找图并使用pyautogui点击
  50. Python筆記-利用OpenCV的matchTemplate屏幕找圖並使用pyautogui點擊
  51. Notes python - utilisez l'écran matchtemplate d'OpenCV pour trouver des images et cliquez sur
  52. Notes de lecture de documents python - Matching de modèles dans OpenCV
  53. Notes python - capture d'écran de l'automate 2 Cliquez pour ouvrir la vue
  54. python链接云服务器的mysql8
  55. python鏈接雲服務器的mysql8
  56. Mysql8 pour les serveurs Cloud liés Python
  57. Python资源大集合,要的话可以拿走!
  58. ️万字【Python基础】保姆式教学️,小白快速入门Python!
  59. ️萬字【Python基礎】保姆式教學️,小白快速入門Python!
  60. Wanzi [base Python] Baby - sitting Teaching, Little White Quick Start Python!