Maison >développement back-end >Tutoriel Python >Explication détaillée des méthodes, propriétés et itérateurs en Python
Cet article explique en détail les méthodes, propriétés et itérateurs en Python
Méthode de construction :
La méthode de construction représente une méthode d'initialisation appelée init similaire à celle utilisée dans les exemples précédents.
Lorsqu'un objet est créé, le constructeur sera appelé immédiatement
>>> class FooBar: def __init__(self): self.somevar=42 >>> f=FooBar() >>> f.somevar >>> class fO SyntaxError: invalid syntax >>> class FooBar(): def __init__(self,value=42): self.somevar=value >>> f=FooBar('This is a constructor argument') >>> f.somevar 'This is a constructor argument'
Remplacer les méthodes générales et les constructeurs spéciaux
>>> class Bird: def __init__(self): self.hungry=True def eat(self): if self.hungry: print 'Aaaah...' self.hungry=False else: print 'No,thanks!' >>> b=Bird() >>> b.eat() Aaaah... >>> b.eat() No,thanks! >>> class SongBird(Bird): def __init__(self): Bird.__init__(self) #调用超类的构造方法 self.sound='Squawk!' def sing(self): print self.sound >>> sb=SongBird() >>> sb.sing() Squawk! >>> sb.eat() Aaaah... >>> sb.eat() No,thanks!
super fonction
super(SongBird,self)
>>> __metaclass__=type >>> class Bird: def __init__(self): self.hungry=True def eat(self): if self.hungry: print 'Aaaah...' self.hungry=False else: print 'No,thinks!' >>> class SongBird(Bird): def __init__(self): super(SongBird,self).__init__() self.sound='Squawk!' def sing(self): print self.sound >>> n=SongBird() >>> n.sing() Squawk! >>> n.eat() Aaaah... >>> n.eat() No,thinks!
Propriété
Les propriétés définies via les accesseurs sont appelées propriétés
>>> class Rectangle: def __init__(self): self.width=0 #特性 self.height=0 #特性 def setSize(self,size): #通过访问器方法改变特性 self.width,self.height=size def getSize(self): #通过访问器方法访问特性 return self.width,self.height >>> r=Rectangle() >>> r.width=10 >>> r.height=5 >>> r.getSize() (10, 5) >>> r.setSize((150,100)) >>> r.width
fonction de propriété
>>> __metaclass__=type >>> class Rectangle: def __init__(self): self.width=0 self.height=0 def setSize(self,size): self.width,self.height=size def getSize(self): return self.width,self.height size=property(getSize,setSize) >>> r=Rectangle() >>> r.width=10 >>> r.height=5 >>> r.size (10, 5) >>> r.size=150,100 >>> r.width
Itérateur
Un itérateur est un générateur avec le prochain
>>> class Fibs: def __init__(self): self.a=0 self.b=1 def next(self): self.a,self.b=self.b,self.a+self.b return self.a def __iter__(self): return self >>> fibs=Fibs() >>> for f in fibs: if f>1000: print f break >>> it=iter([1,2,3]) >>> it.next() >>> it.next() >>> class TestIterator: value=0 def next(self): self.value+=1 if self.value>10: raise StopIteration return self.value def __iter__(self): return self >>> ti=TestIterator() >>> list(ti) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
générateur de rendement
Toute fonction qui contient une instruction de rendement est appelée un générateur. Chaque fois qu'une valeur est générée (à l'aide de l'instruction rendement), la fonction sera gelée, c'est-à-dire que la fonction s'arrête à ce stade en attendant d'être activée. Une fois la fonction activée, l'exécution commence à partir du point où elle s'est arrêtée
.>>> nested=[[1,2],[3,4],[5]] >>> def flatten(nested): for sublist in nested: for element in sublist: yield element >>> for num in flatten(nested): print num 2 4
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!