Anonieme klassen en objecten verkennen in Python
De ingebouwde functie type() van Python retourneert de klasse waartoe een object behoort. In Python zijn een klasse, zowel een ingebouwde klasse als een door de gebruiker gedefinieerde klasse, objecten van het type klasse.
Voorbeeld
class myclass:
def __init__(self):
self.myvar=10
return
obj = myclass()
print ('class of int', type(int))
print ('class of list', type(list))
print ('class of dict', type(dict))
print ('class of myclass', type(myclass))
print ('class of obj', type(obj))
Het zal de volgende uitvoer produceren −
class of int <class 'type'> class of list <class 'type'> class of dict <class 'type'> class of myclass <class 'type'>
Het type() heeft een versie met drie argumenten:−
Syntaxis
newclass=type(name, bases, dict)
Met behulp van bovenstaande syntaxis kan een klasse dynamisch worden gemaakt. Drie argumenten van het type functie zijn −
-
naam − naam van de klasse die __name__ attribuut van de nieuwe klasse
wordt -
bases - tupel bestaande uit bovenliggende klassen. Kan leeg zijn als het geen afgeleide klasse is
-
dict − woordenboek dat de naamruimte vormt van de nieuwe klasse die attributen en methoden en hun waarden bevat.
Maak een anonieme klas
We kunnen een anonieme klasse maken met de bovenstaande versie van de functie type(). Het naamargument is een nulreeks, het tweede argument is een tupel van één klasse de objectklasse (merk op dat elke klasse in Python wordt geërfd van de objectklasse). We voegen bepaalde instantievariabelen toe als het derde argumentwoordenboek. We houden het voorlopig leeg.
anon=type('', (object, ), {})
Maak een anoniem object
Om een object van deze anonieme klasse te maken −
obj = anon()
print ("type of obj:", type(obj))
Het resultaat laat zien dat het object van een anonieme klasse is
type of obj: <class '__main__.'>
Anoniem klasse- en objectvoorbeeld
We kunnen ook instantievariabelen en instantiemethoden dynamisch toevoegen. Kijk eens 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())
Het zal de volgende uitvoer produceren −
5 6
Python
- Python - Overzicht
- Python Attrs:geavanceerde gegevensklassen, met voorbeeldcode
- Python if... else-instructie
- Python String strip() Functie met VOORBEELD
- Python - Basissyntaxis
- Python-pakket
- Python-functies
- Python-sluitingen
- Controleer uw Python-versie op Linux, macOS en Windows:een korte handleiding
- De Zen van Python (PEP-20 paasei)
- Python - Bestanden I/O