Mètodes d’instància vs. estàtica contra classe a Python: les diferències importants

Mètodes d’instància vs. estàtica contra classe a Python: les diferències importants

Els mètodes Python sovint poden ser confusos un cop heu entrat en la programació orientada a objectes (OOP). Aquesta guia cobreix els tres tipus principals de mètodes a Python.





Els 3 tipus de mètodes a Python

Hi ha tres tipus de mètodes a Python: mètodes d’instància , mètodes estàtics , i mètodes de classe .





Conèixer les diferències no sempre és necessari per codificar scripts bàsics de Python, però una vegada que avanceu a OOP, les diferències poden fer un gran canvi.





Si sou nou a Python o simplement voleu experimentar sense haver d’instal·lar res, assegureu-vos de visitar-los intèrpret d’ordres interactius en línia de Python .

Abans de començar: comprensió dels patrons de decoració

Abans de veure les diferències, és important entendre un patró de disseny conegut com a patró decorador , o simplement anomenat a decorador .



Els decoradors semblen complexos, però no hi ha res a témer. Els decoradors són simplement funcions. Podeu escriure-les vosaltres mateixos o utilitzar els inclosos a les biblioteques o a la biblioteca estàndard de Python.

Com qualsevol funció, els decoradors realitzen una tasca. La diferència aquí és que els decoradors apliquen lògica o canvien el comportament d'altres funcions. Són una manera excel·lent de reutilitzar el codi i poden ajudar a separar la lògica en qüestions individuals.





El patró decorador és la forma preferida de Python per definir mètodes estàtics o de classe. A continuació, es mostra l'aspecte que es fa a Python:

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
@staticmethod
def example_function():
''' This method is decorated! '''
print('I'm a decorated function!')

de = DecoratorExample()
de.example_function()

Els decoradors han de precedir immediatament una declaració de funció o classe. Comencen per la @ sign i, a diferència dels mètodes normals, no cal posar parèntesis al final tret que estigueu passant arguments.





És possible combinar diversos decoradors, escriure els vostres propis i aplicar-los a les classes, però no caldrà fer res per a aquests exemples.

com aconseguir una ratxa a Snapchat

Mètodes d’instància a Python

Els mètodes d’instància són el tipus de mètode més comú a les classes de Python. Es diuen així perquè poden accedir a dades úniques de la seva instància. Si teniu dos objectes creats a partir d'una classe de vehicles, podrien tenir propietats diferents. Poden tenir diferents colors, mides del motor, seients, etc.

Els mètodes d’instància han de tenir jo mateix com a paràmetre, però no cal passar-ho cada vegada. Jo és un altre terme especial de Python. Dins de qualsevol mètode d’instància, podeu utilitzar self per accedir a qualsevol dada o mètode que pugui residir a la vostra classe. No hi podreu accedir sense passar pel vostre compte.

Finalment, com que els mètodes d’instància són els més habituals, no cal fer cap decorador. Qualsevol mètode que creeu es crearà automàticament com a mètode d’instància, tret que expliqueu el contrari a Python.

Aquí teniu un exemple:

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
self.name = 'Decorator_Example'
def example_function(self):
''' This method is an instance method! '''
print('I'm an instance method!')
print('My name is ' + self.name)

de = DecoratorExample()
de.example_function()

El nom s'accedeix a la variable jo mateix . Fixeu-vos que quan funció_exemple es diu, no cal passar-se a si mateix --- Python ho fa per vosaltres.

Mètodes estàtics a Python

Els mètodes estàtics són mètodes relacionats d'alguna manera amb una classe, però que no necessiten accedir a cap dada específica de la classe. No cal fer servir jo mateix , i ni tan sols necessiteu instanciar una instància, només podeu trucar al vostre mètode:

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
@staticmethod
def example_function():
''' This method is a static method! '''
print('I'm a static method!')

de = DecoratorExample.example_function()

El @staticmethod El decorador es va utilitzar per dir a Python que aquest mètode és un mètode estàtic.

Els mètodes estàtics són ideals per a funcions d’utilitat, que realitzen una tasca de forma aïllada. No necessiten (i no poden) accedir a les dades de la classe. Han de ser completament autònoms i funcionar només amb dades transmeses com a arguments. Podeu utilitzar un mètode estàtic per afegir dos números junts o imprimir una cadena determinada.

Mètodes de classe a Python

Els mètodes de classe són el tercer i últim tipus de mètode OOP que es coneix. Els mètodes de classe coneixen la seva classe. No poden accedir a dades d’instàncies específiques, però poden trucar a altres mètodes estàtics.

Els mètodes de classe no són necessaris jo mateix com a argument, però necessiten un paràmetre anomenat cls . Això significa classe , i com jo mateix, Python passa automàticament.

Els mètodes de classe es creen mitjançant @classmethod decorador.

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
@classmethod
def example_function(cls):
''' This method is a class method! '''
print('I'm a class method!')
cls.some_other_function()
@staticmethod
def some_other_function():
print('Hello!')

de = DecoratorExample()
de.example_function()

Els mètodes de classe són possiblement els tipus de mètodes més confusos dels tres, però sí que tenen els seus usos. Els mètodes de classe poden manipular la mateixa classe, cosa que és útil quan treballeu en projectes més grans i complexos.

Quan s'ha d'utilitzar cada tipus de mètode

Pot semblar una decisió difícil i descoratjadora triar entre els tipus de mètodes de Python, però aviat en tindreu la pràctica.

com ajustar Windows 10 per a jocs

Fins i tot si només escriviu petits scripts per divertir-vos, aprendre una altra característica OOP de Python és una gran habilitat per conèixer i us pot ajudar a fer que el vostre codi sigui més fàcil de resoldre i de reutilitzar en el futur.

En resum:

  1. Mètodes d'instància: El tipus de mètode més comú. Capaç d’accedir a dades i propietats exclusives de cada instància.
  2. Mètodes estàtics: No es pot accedir a cap altra cosa de la classe. Codi totalment autònom.
  3. Mètodes de classe: Pot accedir a mètodes limitats a la classe. Pot modificar els detalls específics de la classe.

Si aquest tutorial estava una mica avançat o no era exactament el que buscàveu, doncs, per què no fer una ullada a aquests cursos per anar des de principiant a professional a Python? Aquests 5 llocs web també són ideals per a principiants de Python. Si voleu un ús físic i real de Python, però us avorreix el Raspberry Pi, què tal la nostra guia de controlant Arduino amb Python ?

Compartir Compartir Tweet Correu electrònic Com netejar el vostre PC amb Windows mitjançant el símbol del sistema

Si el vostre PC amb Windows es queda sense espai d’emmagatzematge, netegeu la brossa amb aquestes ràpides utilitats de símbol del sistema.

Llegiu a continuació
Temes relacionats
  • Programació
  • Programació
  • Python
Sobre l'autor Joe Coburn(136 articles publicats)

Joe és llicenciat en Informàtica per la Universitat de Lincoln, Regne Unit. És un desenvolupador de programari professional i, quan no fa volar drons ni escriu música, sovint se’l pot trobar fent fotos o produint vídeos.

Més de Joe Coburn

Subscriu-te al nostre butlletí

Uniu-vos al nostre butlletí per obtenir consells tècnics, ressenyes, llibres electrònics gratuïts i ofertes exclusives.

Feu clic aquí per subscriure-us