logo

Klase vai statiskie mainīgie Python

Visiem objektiem ir kopīga klase vai statiskie mainīgie. Eksemplārs vai nestatiskie mainīgie dažādiem objektiem ir atšķirīgi (katram objektam ir kopija). Piemēram, ļaujiet datorzinātņu studentam tikt pārstāvētam ar klasi CSS students . Klasei var būt statisks mainīgais, kura vērtība ir cse visiem objektiem. Un klasē var būt arī tādi nestatiski dalībnieki kā nosaukums un roll .

Programmā C++ un Java mēs varam izmantot statiskus atslēgvārdus, lai padarītu mainīgo par klases mainīgo. Mainīgie, kuriem iepriekš nav statiska atslēgvārda, ir gadījumu mainīgie. Skatiet šo Java piemēram un šo C++ piemēram.



Paskaidrojums:

Programmā Python statiskais mainīgais ir mainīgs, kas tiek koplietots starp visiem klases gadījumiem, nevis ir unikāls katrai instancei. To dažreiz dēvē arī par klases mainīgo, jo tas pieder klasei, nevis kādai konkrētai klases gadījumam.

Statiskie mainīgie ir definēti klases definīcijā, bet ārpus jebkuras metodes definīcijas. Tie parasti tiek inicializēti ar vērtību, tāpat kā gadījuma mainīgais, taču tiem var piekļūt un tos mainīt, izmantojot pašu klasi, nevis gadījumu.

Statisko mainīgo iezīmes

  • Statiskajiem mainīgajiem atmiņa tiek piešķirta vienreiz, kad klases objekts tiek izveidots pirmo reizi.
  • Statiskie mainīgie tiek izveidoti ārpus metodēm, bet klasē
  • Statiskajiem mainīgajiem var piekļūt, izmantojot klasi, bet ne tieši ar gadījumu.
  • Statisko mainīgo uzvedība nemainās katram objektam.

Python pieeja ir vienkārša; tam nav nepieciešams statisks atslēgvārds.



Piezīme: Visi mainīgie, kuriem ir piešķirta vērtība uz klases deklarācija ir klases mainīgie. Un mainīgie ka Metodēs tiek piešķirtas vērtības, kas ir gadījumu mainīgie.

java apakšvirknes funkcija

Piemērs:

Python






# Python program to show that the variables with a value> # assigned in class declaration, are class variables> # Class for Computer Science Student> class> CSStudent:> >stream>=> 'cse'> # Class Variable> >def> __init__(>self>,name,roll):> >self>.name>=> name># Instance Variable> >self>.roll>=> roll># Instance Variable> # Objects of CSStudent class> a>=> CSStudent(>'Geek'>,>1>)> b>=> CSStudent(>'Nerd'>,>2>)> print>(a.stream)># prints 'cse'> print>(b.stream)># prints 'cse'> print>(a.name)># prints 'Geek'> print>(b.name)># prints 'Nerd'> print>(a.roll)># prints '1'> print>(b.roll)># prints '2'> # Class variables can be accessed using class> # name also> print>(CSStudent.stream)># prints 'cse'> # Now if we change the stream for just a it won't be changed for b> a.stream>=> 'ece'> print>(a.stream)># prints 'ece'> print>(b.stream)># prints 'cse'> # To change the stream for all instances of the class we can change it> # directly from the class> CSStudent.stream>=> 'mech'> print>(a.stream)># prints 'ece'> print>(b.stream)># prints 'mech'>

>

>

Izvade

cse cse Geek Nerd 1 2 cse ece cse ece mech>

Izvade:

cse cse Geek Nerd 1 2 cse ece cse ece mech>

Piemērs:

Python




class> MyClass:> >static_var>=> 0> >def> __init__(>self>):> >MyClass.static_var>+>=> 1> >self>.instance_var>=> MyClass.static_var> obj1>=> MyClass()> print>(obj1.instance_var)># Output: 1> obj2>=> MyClass()> print>(obj2.instance_var)># Output: 2> print>(MyClass.static_var)># Output: 2>

>

>

Izvade

1 2 2>

Paskaidrojums:

šajā piemērā mēs definējam klasi MyClass, kuras statiskais mainīgais static_var ir inicializēts uz 0. Mēs arī definējam instances mainīgo instance_var, kas ir unikāls katrai klases instancei.

Kad mēs izveidojam klases (obj1) gadījumu, mēs palielinām statiskā mainīgā vērtību par 1 un piešķiram to instances mainīgajam. Kad mēs izveidojam citu klases gadījumu (obj2), mēs atkal palielinām statisko mainīgo un piešķiram jauno vērtību šīs instances mainīgajam.

Visbeidzot, mēs izdrukājam statiskā mainīgā vērtību, izmantojot pašu klasi, nevis klases gadījumu. Kā redzat, statiskā mainīgā vērtība tiek koplietota starp visiem klases gadījumiem, un tā tiek palielināta katru reizi, kad tiek izveidots jauns gadījums.

Statiskie mainīgie var būt noderīgi, lai uzturētu stāvokli visos klases gadījumos vai koplietotu datus starp visiem klases gadījumiem. Tomēr ir svarīgi tos lietot uzmanīgi un nodrošināt, lai to vērtības tiktu sinhronizētas ar programmas stāvokli, īpaši daudzpavedienu vidē.

Priekšrocības:

    Atmiņas efektivitāte: tā kā statiskie mainīgie tiek koplietoti starp visiem klases gadījumiem, tie var ietaupīt atmiņu, izvairoties no nepieciešamības izveidot vairākas vienu un to pašu datu kopijas. Koplietots stāvoklis: statiskie mainīgie var nodrošināt veidu, kā uzturēt kopīgu stāvokli visos klases gadījumos, ļaujot visiem gadījumiem piekļūt vieniem un tiem pašiem datiem un tos modificēt. Vienkārša piekļuve: statiskajiem mainīgajiem var piekļūt, izmantojot pašu klases nosaukumu, neizmantojot klases gadījumu. Tas var padarīt ērtāku piekļuvi statiskā mainīgā saglabātajiem datiem un to modificēšanu. Inicializācija : statiskos mainīgos var inicializēt, kad klase ir definēta, tādējādi ļaujot viegli nodrošināt, ka mainīgajam ir derīga sākuma vērtība. Lasāmība : statiskie mainīgie var uzlabot koda lasāmību, jo tie skaidri norāda, ka mainīgajā saglabātie dati tiek koplietoti starp visiem klases gadījumiem.

Trūkumi:

    Neelastība : statiskie mainīgie var būt neelastīgi, jo to vērtības ir kopīgas visos klases gadījumos, tādēļ ir grūti noteikt dažādas vērtības dažādiem gadījumiem. Slēptās atkarības: statiskie mainīgie var radīt slēptas atkarības starp dažādām koda daļām, apgrūtinot koda izpratni un modificēšanu. Pavedienu drošība: statiskie mainīgie var būt problemātiski daudzpavedienu vidē, jo tie var izraisīt sacensību apstākļus un sinhronizācijas problēmas, ja tie nav pareizi sinhronizēti. Nosaukumvietas piesārņojums : statiski mainīgie var papildināt klases nosaukumvietu, potenciāli radot nosaukumu konfliktus un apgrūtinot koda uzturēšanu. Testēšana: statiskie mainīgie var apgrūtināt efektīvu vienību testu rakstīšanu, jo statiskā mainīgā stāvoklis var ietekmēt klases un tās metožu uzvedību.

Kopumā statiskie mainīgie var būt noderīgs Python programmēšanas rīks, taču tie ir jāizmanto uzmanīgi un uzmanīgi, ņemot vērā iespējamās negatīvās puses, piemēram, neelastību, slēptās atkarības un pavedienu drošības problēmas.