Dans les anciennes versions de python lorsque vous créez une classe en python, elle peut hériter de objet, autant que je sache, une fonction intégrée python élément qui permet à votre objet d'être un objet de nouveau style.
Qu'en est-il des versions plus récentes (> 3.0 et 2.6)? J'ai googlé sur l'objet de classe mais j'obtiens tellement de résultats (pour des raisons évidentes). Un indice?
Remercier!
Vous n'avez pas besoin d'hériter de object
pour avoir un nouveau style dans python 3. Toutes les classes sont de nouveau style.
Je me rends compte que c'est une vieille question, mais il convient de noter que même en python 3 ces deux choses ne sont pas tout à fait la même chose.
Si vous héritez explicitement de object
, ce que vous faites réellement hérite de builtins.object
indépendamment de ce que cela indique à l'époque.
Par conséquent, je pourrais avoir un module (très farfelu) qui remplace l'objet pour une raison quelconque. Nous appellerons ce premier module "newobj.py":
import builtins
old_object = builtins.object # otherwise cyclic dependencies
class new_object(old_object):
def __init__(self, *args, **kwargs):
super(new_object, self).__init__(*args, **kwargs)
self.greeting = "Hello World!"
builtins.object = new_object #overrides the default object
Puis dans un autre fichier ("klasses.py"):
class Greeter(object):
pass
class NonGreeter:
pass
Puis dans un troisième fichier (que nous pouvons réellement exécuter):
import newobj, klasses # This order matters!
greeter = klasses.Greeter()
print(greeter.greeting) # prints the greeting in the new __init__
non_greeter = klasses.NonGreeter()
print(non_greeter.greeting) # throws an attribute error
Vous pouvez donc voir que, dans le cas où il hérite explicitement de l'objet, nous obtenons un comportement différent de celui où vous autorisez l'héritage implicite.