Certaines bibliothèques standard Python utilisent des drapeaux comme ceci:création Python de drapeaux, pour l'auto classe créée
re.match(pattern, str, re.MULTILINE | re.IGNORECASE)
Je me demande, comment mettre en œuvre que si vous créez une classe vous. J'ai cherché l'Internet et a constaté que: Python: passing flags to functions Cette question n'est pas satisfaisant pour moi, car il montre que est l'approche de dire
bla.function(argument, flag1=0, flag3=1)
Mais je veux vraiment comme
bla.function(argument, bla.SOMEFLAG | bla.SOMEOTHERFLAG)
est cela est-il possible?
De plus, est-il possible de créer ces drapeaux, sans les laisser faire référence à une valeur réelle ?, donc vous demandez vraiment bla.SOMEFLAG dans le code et non pour un int, qui est représenté par le drapeau? Un exemple d'utilisation de ce serait:
mask_list = [
[ 15, "foo", "bar"],
[bla.TRANSPARENT, "egg", 14.3],
[ (4,7,2), {"name":"john"}, bla.TRANSPARENT]
]
où mask_list représente un masque (contenant tous les éléments), qui peut être ensuite comparée à une autre liste en fonction, tous les index où un drapeau de bla.TRANSPARENT est réglé, obtenir ignoré par la comparaison.
Si quelqu'un pouvait me passer un lien vers un fichier, où cela est expliqué, ou pourrait trouver une explication simple, je serais vraiment reconnaissant. (J'utilise Python3)
Merci d'avance!
Vous pourriez il suffit de regarder les fichiers source de la bibliothèque de votre Python. 're.py' par exemple vous montrera exactement comment' re' implémente ses drapeaux. Ce ne sont que des variables globales dans le module. – Duncan
@Duncan C'est une bonne idée, c'est exactement ce que je fais en ce moment, dans ce fichier le drapeau IGNORECASE donne sre_compile.SRE_FLAG_IGNORECASE, j'ai jeté un coup d'oeil à sre_compile.py, SRE_FLAG_IGNORECASE n'est nulle part ailleurs et je peux aussi t comprendre comment le "|" doit être implémenté en regardant ce fichier. – Blarify
Le '|' est juste au niveau du bit ou: les drapeaux sont 1, 2, 4, 8, ... et vous ou eux ensemble pour passer plus d'un. Ils sont actuellement dans 'sre_constants.py' et' sre_compile.py' fait un 'from sre_constants import *' – Duncan