• [^] # Re: Python vs Ruby

    Posté par . En réponse au journal Choisir un framework web.... Évalué à 2.

    Si tout est objet, cela veut dire que chaque instruction s'execute dans le contexte d'un objet, et donc self doit être défini. Quand tu ouvres un interpréteur ruby, self et définit dès le départ (et est une instance de type ObjectSpace).

    Quand je crées une nouvelle classe, je ne fais qu'instancier un objet de type Class. Lorsque je la définis, je suis dans le constructeur de cet objet, et donc self est bien défini, et représente l'instance que je suis en train de définir.

    Je ne trouve pas ceci cohérent avec le principe « tout est objet » :

    stripatublu% python
    Python 2.5.4 (r254:67916, Nov 19 2009, 22:14:20)
    [GCC 4.3.4] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> class Plop:
    ... pass
    ...
    >>> Plop().__class__
    <class __main__.Plop at 0x7f82a55b36b0>
    >>> Plop.__class__
    Traceback (most recent call last):
    File "", line 1, in
    AttributeError: class Plop has no attribute '__class__'


    En ruby, une classe est objet, tu peux créer une classe en appelant le constructeur de Class, et dont le scope n'est pas global. Ça, c'est cohérent avec le principe « tout est objet ».