2.7 base. Il est indispensable que vous connaissiez une autre langue.
from import Déclaration "Utiliser la classe Decimal du module standard appelé decimal"
>>> from decimal import Decimal
Importer toutes les classes
>>> d = Decimal(10)
>>> print d
10
>>> print d + 3 #Classe décimale+Possède une méthode correspondant à l'opérateur
13
Pour plus d'informations sur Decimal http://docs.python.jp/2/library/decimal.html
>>> class MyClass:
... pass
...
>>> mc = MyClass()
>>> print mc
<__main__.MyClass instance at 0x1076245a8>
Les noms de classe sont généralement écrits dans des cas de chameaux. pass est une opération nulle et ne fait rien.
Python n'a pas la capacité d'écrire des définitions de variable membre avec des définitions de classe. Les attributs (membres de données) sont définis pour chaque instance en les affectant à des variables séparées par des points pour l'instance générée.
>>> mc = MyClass()
>>> mc.value = 10
>>> print(mc.value)
10
>>> mc2 = MyClass()
>>> print mc2.value
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: MyClass instance has no attribute 'value'
\ Init (et \ __ new__) est fourni comme une méthode d'initialisation de type constructeur.
class MyClass:
#Méthode d'initialisation
def __init__(self):
self.h = 'hoge' #Ajouter des attributs
#Méthode
def print_h(self):
print h
mc = MyClass()
mc.print_h() # => 'hoge'
L'objet d'instance lui-même est passé au premier argument, self. Il est de coutume d'utiliser soi-même, mais cela et moi travaillons aussi. Si vous voulez donner des variables à l'initialisation
class Rect:
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
r = Rect(100, 50)
print r.height # => 50
print r.area # => 5000
devenir de cette façon. Notez que l'appelant de la méthode d'initialisation ignore le premier argument. Si vous vous oubliez dans l'argument,
>>> class MyClass():
... def hoge():
... print 'hoge'
...
>>> mc = MyClass()
>>> mc.hoge()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: hoge() takes no arguments (1 given)
Entraînera l'erreur.
Il n'y a pas de mots-clés privés en python, et si vous souhaitez masquer un attribut ou un nom de méthode, ajoutez un trait de soulignement (un ou deux) devant lui.
def _private_method():
# ....
def __secret_method():
# ....
Dans un cas, il est d'usage d'exprimer l'intention de "ne pas appeler de l'extérieur", et dans les deux cas, le nom est automatiquement changé en interne pour le rendre impossible à appeler de l'extérieur.
class MyClass:
def __init__(self, size):
self._size = size
self.__size = size
mc = MyClass(100)
print mc._size # => 100
print mc.__size # => AttributeError
Python prend en charge ** l'héritage multiple **. Vous pouvez également créer de nouvelles classes en héritant de types intégrés tels que des nombres et des chaînes.
classe
Il semble que le comportement soit légèrement différent lorsque la classe héritée n'est pas spécifiée et lorsque l'objet est hérité. Il est recommandé d'hériter d'un objet s'il n'hérite de rien (?).
Dans Python3, il semble que l'objet sera hérité par défaut si la classe parent n'est pas spécifiée.
class C1():
pass
print dir(C1) #=> ['__doc__', '__module__']
class C2(object):
pass
print dir(C2) #=> ['__class__', '__delattr__', '__dict__', '__doc__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', '__weakref__']
class Rectangle(object):
def __init__(self, w, h):
self.w = w
self.h = h
self.color = 'red'
def area(self):
return self.w * self.h
class Square(Rectangle):
#Redéfinir (remplacer) la méthode d'initialisation
def __init__(self, length):
self.w = self.h = length
s = Square(100)
print s.area() #=>10000, appel de méthode de classe parent
Les remplacements de méthode sont des remplacements complets et n'appellent pas automatiquement le constructeur parent. Ainsi, par exemple, la variable color initialisée par la classe parent \ init () ci-dessus n'existe pas dans l'instance de la classe Square. Pour éviter cela, appelez la méthode parent avec super (),
class Square(Rectangle):
def __init__(self, length):
super(Square, self).__init__(length, length)
Je dois l'appeler maladroit. Identifiez la classe parent en passant votre type et votre auto. En outre, à ce stade, si la classe parente n'hérite pas de la classe d'objet, une erreur se produit.
En Python3, il semble que vous puissiez obtenir une super classe avec juste super ()
.
Recommended Posts