Exemplaar versus Statische versus klassemethoden in Python De belangrijke verschillen

Exemplaar versus Statische versus klassemethoden in Python De belangrijke verschillen / Programming

Python-methoden kunnen vaak verwarrend zijn als je eenmaal in object oriented programming (OOP) bent gestapt. Deze handleiding behandelt de drie hoofdtypen methoden in Python.

De 3 soorten methoden in Python

Er zijn drie soorten methoden in Python: instantiemethoden, statische methoden, en klassen methoden.

Het kennen van de verschillen is niet altijd nodig om basis Python-scripts te coderen, maar zodra je verder gaat in OOP, kunnen de verschillen een grote verandering teweegbrengen..

Als je nieuw bent bij Python, of gewoon wilt experimenteren zonder iets te hoeven installeren, zorg dan dat je deze online interactieve Python-shells bezoekt. Probeer Python in je browser met deze gratis online interactieve shells Probeer Python in je browser met deze gratis online interactieve Shells Of u nu deze Python-voorbeelden doorneemt of de basis van arrays en lijsten doorneemt, u kunt de code rechtstreeks in uw browser testen. Dit zijn de beste online Python-tolken die we hebben gevonden. Lees verder .

Voordat we beginnen: Decorateurpatronen begrijpen

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

Decorateurs klinken complex, maar er is niets te vrezen. Decorateurs zijn eenvoudig functies. U kunt ze zelf schrijven of gebruiken in bibliotheken of in de standaardbibliotheek van Python.

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

Het patroon van de decorateur is de geprefereerde manier van Python om statische of klassemethodes te definiëren. Hier is hoe je eruit ziet in Python:

class DecoratorExample: "" "Voorbeeldklasse" "" def __init __ (self): "" "Voorbeeldinstelling" "" print ('Hello, World!') @staticmethod def example_function (): "" "Deze methode is gedecoreerd!" "" print ('I \' ma decorated function! ') de = DecoratorExample () de.example_function ()

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

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

Instantiemethoden in Python

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

Instantiemethoden moeten hebben zelf als een parameter, maar je hoeft dit niet elke keer door te geven. Zelf is een andere speciale term voor Python. In elke instantiemethode kunt u zichzelf gebruiken om toegang te krijgen tot alle gegevens of methoden die zich in uw klas kunnen bevinden. Je kunt ze niet openen zonder zelf te gaan.

Ten slotte is er geen decorateur nodig omdat instantiemethoden het meest voorkomen. Elke methode die u maakt, wordt automatisch gemaakt als een instantiemethode, tenzij u anders aan Python doorgeeft.

Hier is een voorbeeld:

class DecoratorExample: "" "Voorbeeldklasse" "" def __init __ (self): "" "Voorbeeldinstelling" "" print ('Hello, World!') self.name = 'Decorator_Example' def example_function (self): "" " Deze methode is een instantiemethode! "" "Print ('Ik ben een instantiemethode!') Print ('Mijn naam is' + self.name) de = DecoratorExample () de.example_function ()

De naam variabele is toegankelijk via zelf. Merk op dat wanneer example_function wordt genoemd, je hoeft zelf niet door te geven - Python doet dit voor jou.

Statische methoden in Python

Statische methoden zijn methoden die op de een of andere manier gerelateerd zijn aan een klasse, maar geen toegang hoeven te hebben tot klassespecifieke gegevens. Je hoeft het niet te gebruiken zelf, en je hoeft niet eens een instance te instantiëren, je kunt gewoon je methode bellen:

class DecoratorExample: "" "Voorbeeldklasse" "" def __init __ (self): "" "Voorbeeldinstelling" "" print ('Hello, World!') @staticmethod def example_function (): "" "Deze methode is een statische methode ! "" "print ('I \' m statische methode! ') de = DecoratorExample.example_function ()

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

Statische methoden zijn geweldig voor hulpprogramma-functies, die een taak afzonderlijk uitvoeren. Ze hoeven geen toegang te hebben (en kunnen geen toegang krijgen tot klassegegevens. Ze moeten volledig op zichzelf staan ​​en alleen werken met gegevens die als argumenten zijn doorgegeven. U kunt een statische methode gebruiken om twee getallen bij elkaar te voegen of een gegeven reeks af te drukken.

Class Methods in Python

Class-methoden zijn het derde en laatste OOP-methodetype om te weten. Klasse methoden kennen hun klasse. Ze hebben geen toegang tot specifieke instantiegegevens, maar ze kunnen andere statische methoden aanroepen.

Class-methoden hoeven niet zelf als een argument, maar ze hebben wel een parameter nodig genaamd cls. Dit staat voor klasse, en zoals ikzelf, wordt het automatisch doorgegeven door Python.

Class methods worden gemaakt met behulp van de @classmethod decorateur.

class DecoratorExample: "" "Voorbeeldklasse" "" def __init __ (self): "" "Voorbeeldinstelling" "" print ('Hallo, Wereld!') @klasse methode def example_function (cls): "" "Deze methode is een klasse methode! "" "print ('I \' l class methode! ') cls.some_other_function () @staticmethod def some_other_function (): print (' Hello! ') de = DecoratorExample () de.example_function ()

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

Wanneer elk methode type 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.

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 weten, en kan het helpen om je code gemakkelijker te maken om problemen op te lossen en gemakkelijker om later opnieuw te gebruiken.

Samengevat:

  1. Instantiemethoden: Het meest voorkomende methode type. In staat om toegang te krijgen tot gegevens en eigenschappen die uniek zijn voor elke instantie.
  2. Statische methoden: Geen toegang tot iets anders in de klas. Volledig onafhankelijke 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, kijk dan eens naar deze cursussen om van Python-beginner naar pro-5 te gaan. Courses That'll Take You from Python Beginner to Pro 5 Courses That'll'll Take You from Python Beginner naar Pro Deze vijf cursussen leren je alles over programmeren in Python, een van de populairste talen die er op dit moment zijn. Lees verder ? Deze 5 websites zijn ook geweldig voor beginners van Python. Als je een fysieke, real-world gebruik van Python wilt, maar je verveeld bent van de Raspberry Pi, wat dacht je van onze gids om Arduino te besturen met Python? Hoe programmeer en bedien je een Arduino met Python? Hoe programmeer en bedien je een Arduino met Python. is het onmogelijk om een ​​Arduino rechtstreeks in Python te programmeren, maar je kunt het via USB besturen met behulp van een Python-programma. Hier is hoe. Lees verder ?

Ontdek meer over: Programmeren, Python.