2009-02-03 15 views
4

Quelle est la raison de transmettre une valeur pour une auto-référence dans les fonctions de classe en python? Par exemple:Passage de soi aux fonctions de classe en Python

class MyClass: 
    """A simple example class""" 
    i = 12345 
    def f(**self**): 
     return 'hello world' 

En faisant cela, ne faites-vous pas le travail du compilateur?

+0

Cela est demandé assez régulièrement: http://stackoverflow.com/questions/68282/why-do-you-need-explicitly-have-the-self-argument-into-a-python-method – Dana

+0

Merci, havre de paix Je n'ai pas vu ça. –

Répondre

9

De nombreux électrons ont donné leur vie à discuter de cette question au cours des années. Guido (le créateur de python) pèse sur la question dans son blog here, en réponse à un proposal l'année dernière pour se débarrasser de l'auto explicite. La FAQ python aussi covers the issue. Enfin, si cela ne vous dérange pas un peu de magie grise, vous pouvez le use a metaclass to get rid of it. Bien qu'il y ait de bonnes raisons de ne pas le faire (cela casse les propriétés, il vous sera plus difficile de comprendre le code des autres, et cela perturbera tout autre programmeur python qui regarde votre code).