Parler d'anciennes et de nouvelles classes en Python

Même si vous l'utilisez depuis plus de 5 ans, c'est une boule de bonbon pour les débutants en Python

Donc, il y a une telle description dans un certain livre

class SomeClass(object):
  ..

Je me suis demandé ce qu'est cet "objet", alors prenez note.

Python class inherits object(Stack Overflow)

Dans la série Python2, il existe deux types de classes, et si vous n'êtes pas plus récent, vous obtiendrez beaucoup d'informations sur les types. Python3 n'est que nouveau, il semble donc être l'une des dernières connaissances.

Eh bien, je vais l'essayer. Il y a aussi de l'amour qui peut être vu des résultats

class_exp.py


class OldClass:
  def a(self):
    print("I'm OldClass")

class OldChild(OldClass):
  def a(self):
    super(OldChild, self).a()

class NewClass(object):
  def a(self):
    print("I'm NewClass")

class NewChild(NewClass):
  def a(self):
    super(NewChild, self).a()

x = OldChild()
y = NewChild()
print(type(x))
print(type(y))
print('--')
try:
  # Will fail with Python 2.x
  x.a() 
except TypeError as e:
  import traceback
  traceback.print_exc()
print('--')
y.a()
> python2.7 misc/class_exp.py
<type 'instance'>
<class '__main__.NewChild'>
--
Traceback (most recent call last):
  File "misc/class_exp.py", line 27, in <module>
    x.a()
  File "misc/class_exp.py", line 10, in a
    super(OldChild, self).a()
TypeError: must be type, not classobj
--
I'm NewClass

> python3.2 misc/class_exp.py
<class '__main__.OldChild'>
<class '__main__.NewChild'>
--
I'm OldClass
--
I'm NewClass

En Python2, les objets de l'ancienne classe ne ressemblent pas au type attendu. Il semble y avoir un point sur lequel le résultat de type (obj) est `` <type'instance '>' '. C'est la relation, je ne vois pas correctement la classe parent avec super ().

Ensuite, lisez l'ancienne documentation.

(2 PEPs 252 and 253: Type and Class Changes)[http://docs.python.org/release/2.2.3/whatsnew/sect-rellinks.html]

À propos, le livre au début est un livre qui se concentre sur Python3, donc je ne sais pas pourquoi j'ai explicitement spécifié des objets qui ne sont pas nécessaires dans Python3.

Recommended Posts

Parler d'anciennes et de nouvelles classes en Python
[Python] À propos des classes Executor et Future
Parler des attributs de classe Python et des métaclasses
À propos de Python, len () et randint ()
À propos de la date et du fuseau horaire Python
À propos de Python et des expressions régulières
À propos des opérations Python et OS
Python # À propos de la référence et de la copie
À propos de Python sort () et reverse ()
À propos de l'installation des séries Pwntools et Python2
ABC pour les classes abstraites Python et la saisie de canard
Python: une note sur les classes 1 "Résumé"
À propos de Python dict et des fonctions triées
À propos de Python et Cython dtype
À propos de Python Pickle (cPickle) et Marshal
À propos de Python, à partir et à l'importation, comme
Classes et instances Python, méthodes d'instance
À propos de _ et __
Lier des méthodes aux classes et instances Python
Une histoire sur Python pop and append
À propos des tranches Python
À propos de la notation d'inclusion de python
[Introduction à Python3 Jour 12] Chapitre 6 Objets et classes (6.3-6.15)
À propos de Python tqdm.
À propos du rendement Python
À propos de python, classe
Comment fonctionnent les classes python et les méthodes magiques.
Pensez aux recherches de priorité de profondeur et de priorité de largeur en Python
À propos de la différence entre "==" et "is" en python
À propos de l'héritage Python
[Introduction à Python3 Jour 11] Chapitre 6 Objets et classes (6.1-6.2)
À propos de python, range ()
[Hikari-Python] Chapitre 09-02 Classes (Création et instanciation de classes)
À propos de Python Decorator
À propos de la référence Python
À propos des décorateurs Python
Une histoire sur la modification de Python et l'ajout de fonctions
[Python] En savoir plus sur la programmation asynchrone et les boucles d'événements
[Python] À propos du multi-processus
À propos des copies superficielles et profondes de Python / Ruby
Premiers pas avec python3 # 2 En savoir plus sur les types et les variables
À propos de la création et de la modification de thèmes personnalisés pour Python IDLE
[Python] Chapitre 01-02 À propos de Python (Exécution et installation de l'environnement de développement)
[python] Compresser et décompresser
À propos de la classe et de l'instance
À propos des arguments de fonction (python)
Itérateur et générateur Python
Paquets et modules Python
Intégration Vue-Cli et Python
[Python] Mémo sur les fonctions
Les classes Python sont lentes
Ruby, Python et carte
Résumé sur Python3 + OpenCV3
À propos de cumprod et cummax
À propos de Python, pour ~ (plage)
entrée et sortie python
[Python] Mémo sur les erreurs
À propos de l'environnement de développement Python
Python: à propos des arguments de fonction