Instantie versus statische versus klassemethoden in Python: de belangrijke verschillen

Instantie versus statische versus klassemethoden in Python: de belangrijke verschillen

Python-methoden kunnen vaak verwarrend zijn als je eenmaal bezig bent met objectgeoriënteerd programmeren (OOP). Deze gids behandelt de drie belangrijkste soorten methoden in Python.





De 3 soorten methoden in Python

Er zijn drie soorten methoden in Python: instantie methoden , statische methoden , en klassenmethoden .





Het kennen van de verschillen is niet altijd vereist om basis Python-scripts te coderen, maar als je eenmaal verder bent in OOP, kunnen de verschillen een grote verandering teweegbrengen.





Als Python nieuw voor je is, of gewoon wilt experimenteren zonder iets te hoeven installeren, bezoek dan zeker deze online interactieve Python-shells .

Voordat we beginnen: decoratiepatronen begrijpen

Voordat we naar de verschillen kijken, is het belangrijk om een ​​ontwerppatroon te begrijpen dat bekend staat als de decorateur patroon , of gewoon a . genoemd decorateur .



Decorateurs klinken ingewikkeld, maar er is niets te vrezen. Decorateurs zijn gewoon functies. Je kunt ze zelf schrijven, of die in bibliotheken of de standaardbibliotheek van Python gebruiken.

Zoals elke functie voeren decorateurs een taak uit. Het verschil hier is dat decorateurs logica toepassen of het gedrag van andere functies veranderen. Ze zijn een uitstekende manier om code opnieuw te gebruiken en kunnen helpen om logica te scheiden van individuele problemen.





Het decorateurpatroon is de geprefereerde manier van Python om statische of klassenmethoden te definiëren. Zo ziet iemand eruit in 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()

Decorateurs moeten onmiddellijk voorafgaan aan een functie- of klassedeclaratie. Ze beginnen met de @ teken, en in tegenstelling tot normale methoden, hoeft u geen haakjes aan het einde te plaatsen, tenzij u argumenten doorgeeft.





Het is mogelijk om meerdere decorateurs te combineren, er zelf een te schrijven en ze ook op klassen toe te passen, maar voor deze voorbeelden hoeft u dat niet te doen.

een afbeelding bijsnijden tot een cirkel

Instantiemethoden in Python

Instantiemethoden zijn het meest voorkomende type methoden in Python-klassen. Deze worden zo genoemd omdat ze toegang hebben tot unieke gegevens van hun instantie. Als je twee objecten hebt die elk zijn gemaakt op basis van een autoklasse, kunnen ze elk verschillende eigenschappen hebben. Ze kunnen verschillende kleuren, motorafmetingen, stoelen, enzovoort hebben.

Instantiemethoden moeten hebben: zelf als parameter, maar je hoeft dit niet elke keer door te geven. Zelf is een andere speciale term in Python. Binnen elke instantiemethode kunt u self gebruiken om toegang te krijgen tot alle gegevens of methoden die zich in uw klasse kunnen bevinden. Je zult er geen toegang toe hebben zonder zelf te gaan.

Ten slotte, aangezien instantiemethoden de meest voorkomende zijn, is er geen decorateur nodig. Elke methode die u maakt, wordt automatisch gemaakt als een instantiemethode, tenzij u Python anders vertelt.

Hier is een voorbeeld:

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()

De naam variabele is toegankelijk via zelf . Merk op dat wanneer voorbeeld_functie wordt genoemd, hoef je jezelf niet in te geven --- Python doet dit voor je.

Statische methoden in Python

Statische methoden zijn methoden die op de een of andere manier gerelateerd zijn aan een klasse, maar die geen toegang nodig hebben tot klassespecifieke gegevens. U hoeft niet te gebruiken zelf , en u hoeft niet eens een instantie te instantiëren, u kunt eenvoudig uw methode aanroepen:

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()

De @staticmethod decorator werd gebruikt om Python te vertellen dat deze methode een statische methode is.

Statische methoden zijn geweldig voor hulpprogramma's, die een taak afzonderlijk uitvoeren. Ze hoeven (en kunnen) geen toegang te krijgen tot klasgegevens. Ze moeten volledig op zichzelf staan ​​en alleen werken met gegevens die als argumenten worden doorgegeven. U kunt een statische methode gebruiken om twee getallen bij elkaar op te tellen, of een bepaalde tekenreeks afdrukken.

Klassemethoden in Python

Klassemethoden zijn het derde en laatste OOP-methodetype dat u moet kennen. Klassemethoden kennen hun klasse. Ze hebben geen toegang tot specifieke instantiegegevens, maar ze kunnen andere statische methoden aanroepen.

Klasse methoden niet nodig zelf als een argument, maar ze hebben wel een parameter nodig met de naam cls . Dit staat voor klas , en net als zelf, wordt automatisch doorgegeven door Python.

Klassemethoden worden gemaakt met behulp van de @classmethod decorateur.

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()

Klassemethoden zijn mogelijk de meer verwarrende methoden van de drie, maar ze hebben wel hun nut. Klassemethoden kunnen de klasse zelf manipuleren, wat handig is wanneer u aan grotere, complexere projecten werkt.

Wanneer moet u elk methodetype gebruiken?

Het lijkt misschien een moeilijke en ontmoedigende beslissing om te kiezen tussen de soorten methoden in Python, maar je zult het snel onder de knie krijgen met een beetje oefening.

als ik naar beneden scrol gaat het omhoog

Zelfs als je alleen kleine scripts schrijft voor de lol, is het leren van een andere OOP-functie van Python een geweldige vaardigheid om te kennen, en kan het helpen om je code gemakkelijker op te lossen en in de toekomst gemakkelijker opnieuw te gebruiken.

Samengevat:

  1. Instantiemethoden: Het meest voorkomende methodetype. Toegang tot gegevens en eigenschappen die uniek zijn voor elke instantie.
  2. Statische methoden: Geen toegang tot iets anders in de klas. Volledig op zichzelf staande code.
  3. Klasse Methoden: Heeft toegang tot beperkte methoden in de klas. Kan klassespecifieke details wijzigen.

Als deze tutorial een beetje geavanceerd was, of niet helemaal wat je zocht, waarom zou je dan niet deze cursussen bekijken om van Python-beginner naar pro te gaan? Deze 5 websites zijn ook geweldig voor Python-beginners. Als je een fysiek, echt gebruik van Python wilt, maar de Raspberry Pi verveelt, wat dacht je van onze gids voor: Arduino besturen met Python ?

Deel Deel Tweeten E-mail Uw Windows-pc opschonen met de opdrachtprompt

Als uw Windows-pc weinig opslagruimte heeft, ruim dan de rommel op met deze snelle opdrachtprompthulpprogramma's.

Lees volgende
Gerelateerde onderwerpen
  • Programmeren
  • Programmeren
  • Python
Over de auteur Joe Coburn(136 artikelen gepubliceerd)

Joe is afgestudeerd in computerwetenschappen aan de Universiteit van Lincoln, VK. Hij is een professionele softwareontwikkelaar en als hij niet met drones vliegt of muziek schrijft, is hij vaak te vinden om foto's te maken of video's te maken.

Meer van Joe Coburn

Abonneer op onze nieuwsbrief

Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!

Klik hier om je te abonneren