Mga Klase sa Python At Mga Bagay - Pag-ooriya ng Programa ng Bagay



Ang blog na ito sa 'Python Class' ay nakikipag-usap sa mga pangunahing kaalaman ng klase, katangian at iba't ibang mga konsepto ng OOPS tulad ng mana, polymorphism at encapsulation.

Matapos ang paghula ng Stack Overflow na sa pamamagitan ng 2019, ang Python ay lalampas sa iba pang mga wika sa mga tuntunin ng mga aktibong developer, ang pangangailangan para sa lumalaki lang.Sinusundan ng Python ang paradaym ng programa na nakatuon sa object. Nakikipag-usap ito sa pagdedeklara ng mga klase ng sawa, lumilikha ng mga bagay mula sa kanila at nakikipag-ugnay sa mga gumagamit. Sa isang wika na nakatuon sa object, ang programa ay nahahati sa mga bagay na may sarili o maaari mong sabihin sa maraming mga mini-program. Ang bawat bagay ay kumakatawan sa isang iba't ibang bahagi ng application na maaaring makipag-usap sa kanilang sarili.
Sa blog na ito ng klase ng sawa, mauunawaan mo ang bawat aspeto ng mga klase at bagay sa sumusunod na pagkakasunud-sunod:

Magsimula na tayo.:-)





Ano ang isang Class ng Python?

Ang isang klase sa sawa ay ang blueprint kung saan nilikha ang mga tiyak na bagay. Hinahayaan ka nitong istraktura ang iyong software sa isang partikular na paraan. Narito ang isang katanungan paano? Pinapayagan kami ng mga klase na ma-grupo nang lohikal ang aming data at pag-andar sa isang paraan na madaling gamitin muli at isang paraan upang makabuo kung kinakailangan. Isaalang-alang ang larawan sa ibaba.

Mga KlaseAndObjeksyon - Klase ng Python - EdurekaSa unang imahe (A), kumakatawan ito sa isang blueprint ng isang bahay na maaaring isaalang-alang bilang Klase . Gamit ang parehong blueprint, makakagawa kami ng maraming mga bahay at ang mga ito ay maaaring isaalang-alang bilang Mga Bagay . Gamit ang isang klase, maaari kang magdagdag ng pagkakapare-pareho sa iyong mga programa upang magamit sila sa mas malinis at mahusay na mga paraan. Ang mga katangian ay mga kasapi ng data (mga variable ng klase at mga variable ng halimbawa) at mga pamamaraan na na-access sa pamamagitan ng nota ng tuldok.



  • Variable ng klase ay isang variable na ibinabahagi ng lahat ng iba't ibang mga bagay / pagkakataon ng isang klase.
  • Mga variable ng pagkakataon ay mga variable na natatangi sa bawat halimbawa. Ito ay tinukoy sa loob ng isang pamamaraan at nabibilang lamang sa kasalukuyang halimbawa ng isang klase.
  • Paraan ay tinawag din bilang mga pagpapaandar na tinukoy sa isang klase at naglalarawan ng pag-uugali ng isang bagay.

Ngayon, magpatuloy tayo at tingnan kung paano ito gumagana sa PyCharm. Upang makapagsimula, tingnan muna ang syntax ng isang klase ng sawa.

Syntax :

klase Class_name: pahayag-1. . pahayag-N

Dito, ang “ klase ” lumilikha ang pahayag ng isang bagong kahulugan ng klase. Sinusunod kaagad ng pangalan ng klase ang keyword na “ klase ” sa sawa na sinusundan ng isang colon. Upang lumikha ng isang klase sa sawa, isaalang-alang ang halimbawa sa ibaba:



empleyado ng klase: pumasa sa # walang mga katangian at pamamaraan emp_1 = empleyado () emp_2 = empleyado () # variable ng pag-install ay maaaring malikha nang manu-mano emp_1.first = 'aayushi' emp_1.last = 'Johari' emp_1.email='aayushi@edureka.co 'emp_1.pay = 10000 emp_2.first =' test 'emp_2.last =' abc 'emp_2.email='test@company.com' emp_2.pay = 10000 print (emp_1.email) print (emp_2.email)

Paglabas -

aayushi@edureka.co test@company.com

Ngayon, paano kung hindi namin nais na manu-manong itakda ang mga variable na ito. Makakakita ka ng maraming mga code at ito rin ay madaling kapitan ng error. Kaya upang gawin itong awtomatiko, maaari naming gamitin ang pamamaraang 'init'. Para doon, maunawaan natin kung ano talaga ang mga pamamaraan at katangian sa isang klase ng sawa.

Mga Paraan at Katangian sa isang Klase ng Python

Ngayon ang paglikha ng isang klase ay hindi kumpleto nang walang ilang pagpapaandar. Kaya't ang mga pagpapaandar ay maaaring matukoy sa pamamagitan ng pagtatakda ng iba't ibang mga katangian na gumaganap bilang isang lalagyan para sa data at mga pagpapaandar na nauugnay sa mga katangiang iyon. Ang mga pagpapaandar sa sawa ay tinatawag ding bilang Paraan . Pinag-uusapan ang sa loob paraan , ito ay isang espesyal na pagpapaandar na tatawagan tuwing ang isang bagong bagay ng klaseng iyon ay naitatag. Maaari mong isipin ito bilang isang paraan ng pagsisimula o maaari mong isaalang-alang ito bilang mga tagapagbuo kung nagmumula ka sa anumang iba pang background na naka-orient na object tulad ng C ++, Java atbp Ngayon kapag nagtakda kami ng isang pamamaraan sa loob ng isang klase, awtomatiko silang nakakatanggap ng halimbawa. Magpatuloy tayo sa klase ng sawa at tanggapin ang unang pangalan, apelyido at suweldo gamit ang pamamaraang ito.

empleyado ng klase: def __init __ (sarili, una, huli, sal): self.fname = unang sarili.lname = huling sarili.sal = sal sarili.email = una + '.' + huling + '@ company.com' emp_1 = empleyado ('aayushi', 'johari', 350000) emp_2 = empleyado ('test', 'test', 100000) print (emp_1.email) print (emp_2.email)

Ngayon sa loob ng aming 'init' na pamamaraan, itinakda namin ang mga variable na ito ng halimbawa (sarili, una, huli, sal). Ang sarili ay ang halimbawa na nangangahulugang tuwing nagsusulat kami ng sarili.fname = una, kapareho ito ng emp_1.first = 'aayushi'. Pagkatapos ay lumikha kami ng mga pagkakataon ng klase ng empleyado kung saan maaari naming ipasa ang mga halagang tinukoy sa init na pamamaraan. Ang pamamaraang ito ay tumatagal ng mga pagkakataon bilang mga argumento. Sa halip na gawin ito nang manu-mano, magagawa ito awtomatiko ngayon

Susunod, nais namin ang kakayahang magsagawa ng ilang uri ng pagkilos. Para doon, magdaragdag kami ng a paraan sa klase na ito Ipagpalagay na nais ko ang pagpapaandar na ipakita ang buong pangalan ng empleyado. Kaya't ipatupad natin ito nang praktikal.

empleyado ng klase: def __init __ (sarili, una, huli, sal): self.fname = unang sarili.lname = huling sarili.sal = sal sarili.email = una + '.' + huling + '@ company.com' def fullname (sarili): ibalik '{} {}'. format (self.fname, self.lname) emp_1 = empleyado ('aayushi', 'johari', 350000) emp_2 = empleyado ('test', 'test', 100000) print (emp_1.email) print (emp_2.email) print (emp_1.fullname ()) print (emp_2.fullname ())

Paglabas-

aayushi.johari@company.com test.test@company.com aayushijohari testtest

Tulad ng nakikita mo sa itaas, lumikha ako ng isang pamamaraan na tinatawag na 'buong pangalan' sa loob ng isang klase. Kaya't ang bawat pamamaraan sa loob ng isang klase ng sawa ay awtomatikong kumukuha ng halimbawa bilang unang argumento. Ngayon sa loob ng pamamaraang ito, isinulat ko ang lohika upang mai-print ang buong pangalan at ibalik ito sa halip na emp_1 unang pangalan at apelyido. Susunod, ginamit ko ang 'sarili' upang gagana ito sa lahat ng mga pagkakataon. Samakatuwid upang mai-print ito sa bawat oras, gumagamit kami ng a paraan .

Sumusulong sa mga klase ng Python, may mga variable na ibinabahagi sa lahat ng mga pagkakataon ng isang klase. Ang mga ito ay tinawag bilang variable ng klase . Ang mga variable ng pagkakataon ay maaaring maging natatangi para sa bawat halimbawa tulad ng mga pangalan, email, sal atbp Komplikado? Unawain natin ito sa isang halimbawa. Sumangguni sa code sa ibaba upang malaman ang taunang pagtaas ng suweldo.

empleyado ng klase: perc_raise = 1.05 def __init __ (sarili, una, huli, sal): self.fname = first self.lname = last self.sal = sal self.email = first + '.' + huling + '@ company.com' def fullname (sarili): ibalik ang '{} {}'. format (self.fname, self.lname) def apply_raise (self): self.sal = int (self.sal * 1.05 ) emp_1 = empleyado ('aayushi', 'johari', 350000) emp_2 = empleyado ('test', 'test', 100000) print (emp_1.sal) emp_1.apply_raise () print (emp_1.sal)

Paglabas-

350000 367500

Tulad ng nakikita mo sa itaas, nai-print ko muna ang suweldo at pagkatapos ay inilapat ang pagtaas ng 1.5%. Upang ma-access ang mga variable ng klase, kailangan nating i-access ang mga ito sa pamamagitan ng klase o isang halimbawa ng klase. Ngayon, unawain natin ang iba't ibang mga katangian sa isang klase ng sawa.

java break out of method

Mga Katangian sa isang Klase ng Python

Ang mga katangian sa Python ay tumutukoy sa isang pag-aari ng isang bagay, elemento o isang file. Mayroong dalawang uri ng mga katangian:

  • Mga Katangian ng Built-in na Klase: Mayroong iba't ibang mga built-in na katangian na nasa loob ng mga klase ng Python. Halimbawa _dict_, _doc_, _name _, atbp. Hayaan akong kumuha ng parehong halimbawa kung saan nais kong tingnan ang lahat ng mga key-value na pares ng empleyado1. Para doon, maaari mo lamang isulat ang pahayag sa ibaba na naglalaman ng namespace ng klase:

    i-print (emp_1 .__ dict__)

    Matapos maipatupad ito, makakakuha ka ng output tulad ng: {'fname': 'aayushi', 'lname': 'johari', 'sal': 350000, 'email': 'aayushi.johari@company.com'}

  • Ang mga katangiang tinukoy ng Mga Gumagamit : Ang mga katangian ay nilikha sa loob ng kahulugan ng klase. Maaari kaming makalikha ng paglikha ng mga bagong katangian para sa mga umiiral na mga pagkakataon ng isang klase. Ang mga katangian ay maaaring nakagapos din sa mga pangalan ng klase.

Susunod, mayroon tayo pampubliko, protektado at pribado mga katangian Maunawaan natin ang mga ito nang detalyado:

Pagpapangalan Uri Kahulugan
PangalanPampublikoAng mga katangiang ito ay maaaring malayang magamit sa loob o labas ng isang kahulugan ng klase
_pangalanProtektadoAng mga protektadong katangian ay hindi dapat gamitin sa labas ng kahulugan ng klase, maliban kung sa loob ng isang kahulugan ng subclass
__pangalanPribadoAng ganitong uri ng katangian ay hindi maa-access at hindi nakikita. Hindi posible na basahin o isulat ang mga katangiang iyon, maliban sa loob mismo ng kahulugan ng klase


Susunod, unawain natin ang pinakamahalagang sangkap sa isang klase ng sawa ie mga Bagay.

Ano ang mga bagay sa isang Python Class?

Tulad ng tinalakay sa itaas, maaaring magamit ang isang bagay upang ma-access ang iba't ibang mga katangian. Ginagamit ito upang lumikha ng isang halimbawa ng klase. Ang isang halimbawa ay isang bagay ng isang klase na nilikha sa run-time.

To bigyan ka ng isang mabilis na pangkalahatang-ideya, isang bagay na talaga ay lahat ng nakikita mo sa paligid. Para sa hal: Ang aso ay isang object ng klase ng hayop, ako ay isang object ng klase ng tao. Katulad nito, maaaring mayroong iba't ibang mga bagay sa parehong klase ng telepono.Ito ay halos kapareho ng isang tawag sa pagpapaandar na tinalakay na natin. Unawain natin ito sa isang halimbawa:

klase MyClass: def func (sarili): print ('Hello') # lumikha ng isang bagong MyClass ob = MyClass () ob.func ()

Sumusulong sa klase ng sawa, unawain natin ang iba't ibang mga konsepto ng OOPs.

Mga Konsepto ng OOPs

Ang mga OOP ay tumutukoy sa Program-oriented Objective sa Python. Sa gayon, ang Python ay hindi ganap na nakatuon sa object dahil naglalaman ito ng ilang mga pagpapaandar sa pamaraan. Ngayon, dapat ay nagtataka ka kung ano ang pagkakaiba sa pagitan ng isang pamamaraang pang-proseso at nakatuon sa object. Upang malinis ang iyong pag-aalinlangan, sa isang pamamaraang pang-proseso, ang buong code ay nakasulat sa isang mahabang pamamaraan kahit na naglalaman ito ng mga pagpapaandar at subroutine. Hindi ito mapamahalaan dahil magkakasama ang parehong data at lohika. Ngunit kapag pinag-uusapan natin ang tungkol sa programa na nakatuon sa object, ang programa ay nahahati sa mga bagay na may sarili o maraming mga mini-program. Ang bawat bagay ay kumakatawan sa isang iba't ibang bahagi ng application na mayroong sariling data at lohika upang makipag-usap sa kanilang mga sarili. Halimbawa, ang isang website ay may iba't ibang mga bagay tulad ng mga imahe, video atbp.
Kasama sa oriented na object na programa ang konsepto ng klase ng Python, object, Heritage, Polymorphism, Abstraction atbp. Unawain natin nang detalyado ang mga paksang ito.

Klase ng Python: Mana

Pinapayagan kami ng mana na magmana ng mga katangian at pamamaraan mula sa batayan / klase ng magulang. Kapaki-pakinabang ito dahil makakalikha kami ng mga sub-class at makuha ang lahat ng pagpapaandar mula sa aming magulang na klase. Pagkatapos ay maaari naming patungan at magdagdag ng mga bagong pag-andar nang hindi nakakaapekto sa magulang na klase. Unawain natin ang konsepto ng klase ng magulang at klase ng bata na may isang halimbawa.

Tulad ng nakikita natin sa imahe, ang isang bata ay nagmamana ng mga pag-aari mula sa ama. Katulad nito, sa sawa, mayroong dalawang klase:

ipatupad ang naka-link na listahan sa c

1. Klase ng magulang (Super o Base klase)

2. Klase ng bata (Class ng Subclass o Hinango)

Ang isang klase na nagmamana ng mga pag-aari ay kilala bilang Bata Ang klase samantalang ang isang klase na ang mga pag-aari ay minana ay kilala bilang Magulang klase

Ang mana ay tumutukoy sa kakayahang lumikha Mga sub-klase na naglalaman ng pagdadalubhasa ng kanilang mga magulang. Hinahati pa ito sa apat na uri katulad ng solong, multilevel, hierarchical at maraming mana. Sumangguni sa imahe sa ibaba upang makakuha ng isang mas mahusay na pag-unawa.

Magpatuloy tayo sa klase ng sawa at unawain kung paano kapaki-pakinabang ang mana.

Sabihin, nais kong lumikha ng mga klase para sa mga uri ng empleyado. Lilikha ako ng mga 'developer' at 'manager' bilang mga sub-class dahil ang parehong mga developer at manager ay magkakaroon ng pangalan, email at suweldo at lahat ng mga pagpapaandar na ito ay naroon sa klase ng empleyado. Kaya, sa halip na kopyahin ang code para sa mga subclass, maaari lamang naming magamit muli ang code sa pamamagitan ng pagmamana mula sa empleyado.

empleyado ng klase: num_employee = 0 pagtaas_amount = 1.04 def __init __ (sarili, una, huli, sal): self.first = first self.last = last self.sal = sal self.email = first + '.' + huling + '@ company.com' employee.num_employee + = 1 def fullname (self): return '{} {}'. format (self.first, self.last) def apply_raise (self): self.sal = int ( self.sal * pagtaas_amount) tagabuo ng klase (empleyado): ipasa ang emp_1 = developer ('aayushi', 'johari', 1000000) print (emp_1.email)
 Paglabas - aayushi.johari@company.com

Tulad ng nakikita mo sa output sa itaas, ang lahat ng mga detalye ng klase ng empleyado ay magagamit sa klase ng developer.Ngayon paano kung nais kong baguhin ang pagtaas_amount para sa isang developer na 10%? tingnan natin kung paano ito magagawa nang praktikal.

empleyado ng klase: num_employee = 0 pagtaas_amount = 1.04 def __init __ (sarili, una, huli, sal): self.first = first self.last = last self.sal = sal self.email = first + '.' + huling + '@ company.com' employee.num_employee + = 1 def fullname (self): return '{} {}'. format (self.first, self.last) def apply_raise (self): self.sal = int ( self.sal * pagtaas_amount) tagabuo ng klase (empleyado): pagtaas_amount = 1.10 emp_1 = developer ('aayushi', 'johari', 1000000) print (emp_1.raise_amount)
 Paglabas - 1.1

Tulad ng makikita mo na na-update nito ang pagtaas ng porsyento ng suweldo mula 4% hanggang 10%.Ngayon kung nais kong magdagdag ng isa pang katangian, sabihin ang isang wika ng programa sa aming init na pamamaraan, ngunit wala ito sa aming magulang na klase. Mayroon bang solusyon para doon? Oo! maaari naming kopyahin ang buong lohika ng empleyado at gawin iyon ngunit tataasan nitong muli ang laki ng code. Kaya upang maiwasan iyon, isaalang-alang natin ang code sa ibaba:

empleyado ng klase: num_employee = 0 pagtaas_amount = 1.04 def __init __ (sarili, una, huli, sal): self.first = first self.last = last self.sal = sal self.email = first + '.' + huling + '@ company.com' employee.num_employee + = 1 def fullname (self): return '{} {}'. format (self.first, self.last) def apply_raise (self): self.sal = int ( self.sal * pagtaas_amount) class developer (empleyado): pagtaas_amount = 1.10 def __init __ (sarili, una, huling, sal, prog_lang): super () .__ init __ (una, huling, sal) self.prog_lang = prog_lang emp_1 = developer ( 'aayushi', 'johari', 1000000, 'python') print (emp_1.prog_lang)

Samakatuwid, sa kaunting code lamang, gumawa ako ng mga pagbabago. Gumamit ako ng sobrang .__ init __ (una, huling, magbayad) na nagmamana ng mga pag-aari mula sa pangunahing klase.Upang magtapos, ang pamana ay ginagamit upang muling magamit ang code at mabawasan ang pagiging kumplikado ng isang programa.

Klase ng Python: Polymorphism

Ang Polymorphism sa Computer Science ay ang kakayahang ipakita ang parehong interface para sa iba't ibang pinagbabatayan na mga form. Sa mga praktikal na termino, ang polymorphism ay nangangahulugan na kung ang klase B ay nagmamana mula sa klase A, hindi nito kailangang manahin ang lahat tungkol sa klase A, magagawa nito ang ilan sa mga bagay na iba ang ginagawa ng klase A. Ito ay karaniwang ginagamit habang nakikipag-usap sa pamana. Ang Python ay implicitly polymorphic, may kakayahang mag-overload ng mga karaniwang operator upang magkaroon sila ng naaangkop na pag-uugali batay sa kanilang konteksto.

Unawain natin sa isang halimbawa:

klase Animal: def __init __ (sarili, pangalan): self.name = name def talk (self): pass class Dog (Animal): def talk (self): print ('Woof') class Cat (Animal): def talk ( sarili): print ('MEOW!') c = Cat ('kitty') c.talk () d = Dog (Animal) d.talk ()

Output -

Meow! Woof

Susunod, lumipat tayo sa isa pang konsepto ng programa na nakatuon sa object tulad ng Abstraction.

Class ng Python: Abstraction

Ginagamit ang abstraction upang gawing simple ang kumplikadong katotohanan sa pamamagitan ng mga klase sa pagmomodelo na naaangkop sa problema. Dito, mayroon kaming isang mahirap unawain na klase na hindi maitaguyod. Nangangahulugan ito na hindi ka makakalikha ng mga bagay o pagkakataon para sa mga klaseng ito. Maaari lamang itong magamit para sa pagmamana ng ilang mga pagpapaandar na tinatawag mong isang batayang klase. Kaya't maaari kang magmamana ng mga pagpapaandar ngunit sa parehong oras, hindi ka makakalikha ng isang halimbawa ng partikular na klase. Unawain natin ang konsepto ng abstract class na may isang halimbawa sa ibaba:

mula sa abc import ABC, abstractmethod class na Empleyado (ABC): @abstractmethod def calcul_salary (sarili, sal): pumasa sa klase Developer (Empleyado): def calcul_salary (sarili, sal): finalsalary = sal * 1.10 return finalsalary emp_1 = Developer () print (emp_1.calculate_salary (10000))

Paglabas-

11000.0

Tulad ng nakikita mo sa output sa itaas, nadagdagan namin ang batayang suweldo sa 10% ibig sabihin ang suweldo ay 11000. Ngayon, kung talagang nagpatuloy ka at gumawa ng isang bagay ng klase na 'Empleyado', binabato ka nito ng isang error tulad ng sawa Hindi ka papayag na lumikha ng isang bagay ng abstract na klase. Ngunit gamit ang mana, maaari kang talagang magmamana ng mga pag-aari at gampanan ang kani-kanilang mga gawain.

ano ang beans sa java

Kaya mga guys, lahat ito ay tungkol sa mga klase sa python at mga bagay sa maikling salita. Saklaw namin ang lahat ng mga pangunahing kaalaman sa klase ng Python, mga bagay at iba't ibang mga konsepto na nakatuon sa object sa sawa, upang maaari mong simulan ang pagsasanay ngayon. Inaasahan kong nalugod kayo sa pagbabasa ng blog na ito sa 'Python Class' at malinaw sa bawat aspeto na tinalakay ko sa itaas. Pagkatapos ng klase ng sawa, makakakuha ako ng maraming mga blog sa Python para sa scikit matuto ng library at array. Manatiling nakatutok!

May tanong ba sa amin? Mangyaring banggitin ito sa seksyon ng mga komento ng blog na 'Python Class' na ito at babalikan ka namin sa lalong madaling panahon.

Upang makakuha ng malalim na kaalaman sa Python kasama ang iba't ibang mga application nito, maaari mo sa aming live na pagsasanay sa online na may suporta na 24/7 at habang-buhay na pag-access.