Anonieme Klassen en Objecten in Python Verkennen
Python's ingebouwde type() functie retourneert de klasse waartoe een object behoort. In Python zijn zowel een ingebouwde klasse als een door de gebruiker gedefinieerde klasse objecten van het type class.
Voorbeeld
class myclass:
def __init__(self):
self.myvar = 10
return
obj = myclass()
print('klasse van int', type(int))
print('klasse van list', type(list))
print('klasse van dict', type(dict))
print('klasse van myclass', type(myclass))
print('klasse van obj', type(obj))
Dit produceert de volgende uitvoer:
klasse van int <class 'type'> klasse van list <class 'type'> klasse van dict <class 'type'> klasse van myclass <class 'type'>
De type() functie heeft een drie-argument versie als volgt:
Syntaxis
newclass = type(name, bases, dict)
Met bovenstaande syntaxis kan een klasse dynamisch worden aangemaakt. De drie argumenten van de type functie zijn:
name – naam van de klasse die het __name__ attribuut van de nieuwe klasse wordt
bases – tuple bestaande uit parent klassen. Kan leeg zijn als het geen afgeleide klasse is
dict – dictionary die de naamruimte van de nieuwe klasse vormt met attributen en methoden en hun waarden.
Een Anonieme Klasse Maken
We kunnen een anonieme klasse maken met de bovenstaande versie van type() functie. Het name argument is een lege string, het tweede argument is een tuple van één klasse, de object klasse (let op dat elke klasse in Python erft van object klasse). We voegen bepaalde instantievariabelen toe als het derde argument dictionary. We laten het voor nu leeg.
anon = type('', (object,), {})
Een Anoniem Object Maken
Om een object van deze anonieme klasse te maken:
obj = anon()
print("type van obj:", type(obj))
Het resultaat toont dat het object van de anonieme klasse is
type van obj: <class '__main__.'>
Anonieme Klasse en Object Voorbeeld
We kunnen ook instantievariabelen en instantiemethoden dynamisch toevoegen. Kijk naar dit voorbeeld:
def getA(self):
return self.a
obj = type('', (object,), {'a': 5, 'b': 6, 'c': 7, 'getA': getA, 'getB': lambda self: self.b})()
print(obj.getA(), obj.getB())
Dit produceert de volgende uitvoer:
5 6
Python
- Python Global, Local en Nonlocal Variabelen begrijpen
- Python-tuples beheersen: aanmaken, benaderen en geavanceerde bewerkingen
- Python-generators: efficiënte iteratie en geavanceerde use cases
- Python's enumerate() meesteren: lussen met indices voor lijsten, tuples, strings en dictionaries
- type() en isinstance() in Python begrijpen: praktische voorbeelden
- Huidige datum en tijd ophalen in Python: een praktische gids
- SciPy in Python: Uitgebreide Tutorial over Bibliotheken & Functies
- Python Beslissingen: Conditionele Logica Onder de Knie Krijgen
- Bestands- en directory-bestaat controleren in Python – Een praktische gids
- Python en PyCharm installeren op Windows: Stapsgewijze handleiding
- Python Loops Beheersen: Control Flow & Herhalingstechnieken