The klases metode () ir Python iebūvēta funkcija, kas atgriež klases metodi noteiktai funkcijai.
classmethod() Python sintaksē
Sintakse: klases metode (funkcija)
Parametrs: Šī funkcija pieņem funkcijas nosaukumu kā parametru.
Atgriešanas veids: Šī funkcija atgriež konvertētās klases metodi.
Python classmethod() Funkcija
Classmethod() metodes ir saistītas ar klasi, nevis objektu. Klases metodes var izsaukt gan klase, gan objekts. Šīs metodes var izsaukt ar klasi vai ar objektu.
npm kešatmiņas notīrīšana
Klases metode pret statisko metodi
Galvenā atšķirība starp klases metode pret statisko metodi Python un kad lietot klases metodi un statisko metodi Python .
- Klases metode izmanto cls kā pirmo parametru, savukārt statiskajai metodei nav nepieciešami īpaši parametri.
- Klases metode var piekļūt klases stāvoklim vai mainīt to, savukārt statiskā metode nevar piekļūt vai mainīt to.
- Kopumā statiskās metodes neko nezina par klases stāvokli. Tās ir utilīta metodes, kas ņem dažus parametrus un strādā pie šiem parametriem. No otras puses, klases metodēm ir jābūt klasei kā parametram.
- Mēs izmantojam @classmethod decorator programmā Python, lai izveidotu klases metodi, un mēs izmantojam @staticmethod decorator, lai izveidotu statisku metodi Python.
Klases metodes piemērs Python
Izveidojiet vienkāršu klases metodi
Šajā piemērā mēs redzēsim, kā Python izveidot klases metodi. Šim nolūkam mēs izveidojām klasi ar nosaukumu Geeks ar dalībnieku mainīgo kursu un izveidojām funkciju pirkums, kas izdrukā objektu. Tagad mēs izturējām metodiGeeks.purchase>klases metodē, izmantojot@classmethod>dekorators, kas metodi pārvērš klases metodē. Izmantojot klases metodi, mēs varam izsaukt funkcijas iegādi, neveidojot funkcijas objektu, tieši izmantojot klases nosaukumu Geeks.
Python3
class> geeks:> >course>=> 'DSA'> >def> purchase(obj):> >print>(>'Purchase course : '>, obj.course)> geeks.purchase>=> classmethod>(geeks.purchase)> geeks.purchase()> |
>
>Izvade
Purchase course : DSA>
Izveidojiet klases metodi, izmantojot classmetho()
Izveidota drukas_nosaukums klases metode pirms šīs rindas izveides drukas_nosaukums() To var izsaukt tikai ar objektu, nevis ar klasi tagad šo metodi var izsaukt kā classmethod print_name() metodi sauc par klases metodi.
Python3
class> Student:> ># create a variable> >name>=> 'Geeksforgeeks'> ># create a function> >def> print_name(obj):> >print>(>'The name is : '>, obj.name)> # create print_name classmethod> # before creating this line print_name()> # It can be called only with object not with class> Student.print_name>=> classmethod>(Student.print_name)> # now this method can be called as classmethod> # print_name() method is called a class method> Student.print_name()> |
>
>Izvade
The name is : Geeksforgeeks>
Rūpnīcas metode, izmantojot klases metodi
Funkcijas classmethod() lietojumi tiek izmantoti rūpnīcas dizaina modeļos, kur mēs vēlamies izsaukt daudzas funkcijas ar klases nosaukumu, nevis objektu.
Python3
java nomaiņas virkne
# Python program to demonstrate> # use of a class method and static method.> from> datetime>import> date> class> Person:> >def> __init__(>self>, name, age):> >self>.name>=> name> >self>.age>=> age> ># a class method to create a> ># Person object by birth year.> >@classmethod> >def> fromBirthYear(>cls>, name, year):> >return> cls>(name, date.today().year>-> year)> >def> display(>self>):> >print>(>'Name : '>,>self>.name,>'Age : '>,>self>.age)> person>=> Person(>'mayank'>,>21>)> person.display()> |
>
>Izvade
Name : mayank Age : 21>
Kā klases metode darbojas mantojuma gadījumā?
Šajā piemērā mēs veidojam Python klases hierarhiju ar divām klasēm,Person>unMan>, un demonstrē klases metožu un mantojuma izmantošanu.
Python3
c
from> datetime>import> date> # random Person> class> Person:> >def> __init__(>self>, name, age):> >self>.name>=> name> >self>.age>=> age> >@staticmethod> >def> from_FathersAge(name, fatherAge, fatherPersonAgeDiff):> >return> Person(name, date.today().year>-> fatherAge>+> fatherPersonAgeDiff)> >@classmethod> >def> from_BirthYear(>cls>, name, birthYear):> >return> cls>(name, date.today().year>-> birthYear)> >def> display(>self>):> >print>(>self>.name>+> ''s age is: '> +> str>(>self>.age))> class> Man(Person):> >sex>=> 'Female'> man>=> Man.from_BirthYear(>'John'>,>1985>)> print>(>isinstance>(man, Man))> man1>=> Man.from_FathersAge(>'John'>,>1965>,>20>)> print>(>isinstance>(man1, Man))> |
>
>Izvade
True False>
Python @classmethod dekorētājs
@classmethod dekorators ir iebūvēts funkciju dekorētājs kas ir izteiksme, kas tiek novērtēta pēc jūsu funkcijas definēšanas. Šī novērtējuma rezultāts aizēno jūsu funkcijas definīciju. Klases metode saņem klasi kā netiešo pirmo argumentu, tāpat kā instances metode saņem instanci.
Klases metodes Dekoratora sintakse
C klase (objekts):
@klases metode
def fun (cls, arg1, arg2, …):
….
kur,
- jautri: funkcija, kas jāpārvērš klases metodē
- atgriež: klases metode funkcijai.
Piezīme:
- Klases metode ir metode, kas ir saistīta ar klasi, nevis ar klases objektu.
- Viņiem ir piekļuve klases stāvoklim, jo tas aizņem klases parametru, kas norāda uz klasi, nevis uz objekta gadījumu.
- Tas var mainīt klases stāvokli, kas attiektos uz visiem klases gadījumiem. Piemēram, tas var modificēt klases mainīgo, kas būtu piemērojams visiem gadījumiem.
Piemērs
Tālāk esošajā piemērā mēs izmantojam staticmethod() un classmethod(), lai pārbaudītu, vai persona ir vai nav pieaugušais.
iskcon pilna forma
Python3
# Python program to demonstrate> # use of a class method and static method.> from> datetime>import> date> class> Person:> >def> __init__(>self>, name, age):> >self>.name>=> name> >self>.age>=> age> ># a class method to create a> ># Person object by birth year.> >@classmethod> >def> fromBirthYear(>cls>, name, year):> >return> cls>(name, date.today().year>-> year)> ># a static method to check if a> ># Person is adult or not.> >@staticmethod> >def> isAdult(age):> >return> age>>>=> Person(>'mayank'>,>21>)> person2>=> Person.fromBirthYear(>'mayank'>,>1996>)> print>(person1.age)> print>(person2.age)> # print the result> print>(Person.isAdult(>22>))> |
>
>Izvade
21 27 True>