Содржина[Крие][Прикажи]
Во ова предавање ќе научиме за класите, конструкторите и наследството во python.
Овие концепти се навистина важни во голема програма каде што треба да се дефинираат различни типови.
Класи
Класите се од суштинско значење во програмирањето и тие не се специфични за python. Многу други програмски јазици го поддржуваат поимот класи. Ние користиме класи за да дефинираме нови типови на податоци.
Досега, научивме за основните типови на податоци во Python како броеви, низи и булови. Ова се основните или едноставните типови на податоци во Python. Видовме и неколку сложени типови на податоци како списоци и речници.
Иако овие типови се исклучително корисни, тие не можат секогаш да се користат за моделирање на сложени концепти. На пример, размислете за идејата за поен или количка за пазарење. Количката за пазарење не е бул или список. Тоа е различен вид на податоци. Така, можеме да користиме класи за да дефинираме нови типови за да моделираме реални концепти.
Сега, ајде да дефинираме нов тип на податоци наречен точка. Овој нов тип ќе има методи како што проверивме претходно.
Вака ќе го направите тоа:
Започнуваме со дефинирање на класа со користење на клучниот збор „класа“ и веднаш потоа и даваме име на нашата класа.
class Point
Сега, погледнете ја конвенцијата за именување што ја користев овде. Овде ја напишав првата буква со голема буква, ова е она што го нарекуваме конвенција за именување на паскал. Оваа конвенција е различна од онаа што ја користиме за именување на нашите променливи и функции за кои секогаш користиме мали букви и издвојуваме повеќе зборови користејќи долна црта. Но, кога именуваме класи, наместо тоа, не користиме долна црта за да одвоиме повеќе зборови, туку ја пишуваме првата буква од секој збор.
По дефинирањето на нашата класа, се користи две точки што значи дека сега е дефиниран блок.
class Point:
def move (self):
Во овој блок, можеме да ги дефинираме сите функции или методи кои припаѓаат на точките. На пример, можеме да дефинираме функција наречена „поместување“ за поместување на точка. Забележете дека штом ќе напишеме отворена заграда, PyCharm автоматски додава „self“ овде. Ова е посебен клучен збор и дозволете ми да се вратам на ова наскоро. Ајде да отпечатиме „поместување“ на терминалот.
print("move")
Ајде да дефинираме друг метод како „цртање“ и да го испечатиме на терминалот.
def draw(self):
print("draw")
Завршивме со дефиницијата на нашата класа „точка“. Со овој нов тип, можеме да создадеме нови објекти. Класата едноставно го дефинира планот или шаблонот за создавање на објекти кои се вистинските примероци врз основа на тој план. За да создадеме објект, го пишуваме името на нашата класа и потоа го нарекуваме исто како функција. Ова создава нов објект и потоа го враќа. Потоа можеме да го складираме тој објект во променлива. Дозволете ми да ви покажам:
Овде дефиниравме „точка 1“ која е тродимензионална точка. Можете да го видите тоа, можеме да печатиме поединечни координати на терминалот.
Со оваа точка можеме да ги користиме двата методи „цртање“ и „поместување“.
Така да резимираме, користиме класи за да дефинираме нови типови и овие типови можат да имаат методи што ги дефинираме во телото на класата. Класите може да имаат атрибути кои можеме да ги поставиме каде било во нашите програми.
Конструктори
Досега научивме како да креираме нови типови користејќи класи. Сега има мал проблем со оваа имплементација. Можеме да создадеме точкаст објект без x или y координати користејќи класи и тоа не е идеално. Дозволете ми да ви покажам.
Ајде да создадеме точка и да ја испечатиме пред да ја поставиме координатата x. Извршувањето на нашата програма резултира со грешка во атрибутот како оваа:
Тоа значи дека точка објектот нема атрибут наречен x. Сега проблемот е што е можно да има точка објект без x или y координати. Ова нема смисла бидејќи секогаш кога зборуваме за точка, треба да знаеме каде се наоѓа таа точка. За да го решиме овој проблем, користиме конструктор. Конструктор е функција која се повикува во моментот на создавање на објект.
Еве како користиме конструктор. Прво, да ги пренесеме вредностите на координатите x и y во горната програма.
point = Point(10, 20)
print(point.x)
Сега, треба да додадеме посебен метод во оваа класа наречен конструктор. Неговата синтакса е вака:
def __init__(self, x, y):
init
е кратенка за иницијализирана, и ова е функцијата или методот што се повикува кога се креира нов објект за точка. x и y се додаваат веднаш потоа self
за да додадете два дополнителни параметри.
После тоа, треба да ги пресликаме x и y на положените вредности т.е. 10 и 20
self.x = x
self.y = y
Ние ги користиме на self
да се однесува на тековниот објект, а потоа го поставивме атрибутот x на аргументот x кој се пренесува на функцијата „x“. На овој начин, користејќи init
метод, можеме да ги иницијализираме нашите објекти. Овој метод се нарекува конструктор. Ајде да ја извршиме нашата програма.
Сега, подоцна можеме да ги промениме координатите x и y. Ајде да ја ажурираме x координатата:
point = Point(10, 20)
point.x = 11
print(point.x)
Сега, координатата x се ажурира на вредност 11.
Вежба
Еве една интересна вежба за вас.
Сакам да дефинираш нов тип наречен личност. Овие објекти „Лице“ треба да имаат „name
„атрибут како и „talk()
”Методот.
Тоа е едноставна задача и не треба да трае повеќе од неколку минути.
Решение
Започнете со дефинирање на класата „Лице“ вака:
class Person:
self.name = name
Подоцна ќе го дефинираме конструкторот. Сега, можеме да го создадеме објектот „Лице“. Да го наречеме Џон
john = Person("John Smith")
print(john.name)
john.talk()
Сега, одете на првиот дел од кодот и креирајте конструктор.
def __init__(self, name):
Конечниот код ќе изгледа вака:
Можете исто така да користите форматирани низи и други концепти во врска со класи и конструктори.
Наследство
Наследувањето е уште еден концепт поврзан со класи што ви дозволуваат повторно да користите код.
Размислете за ова парче код.
class Dog:
def walk(self):
print("walk")
Создадовме класа „Куче“ со метод на „прошетка“. Во овој метод, ние едноставно ја печатиме пораката за прошетка на терминалот. Да речеме, во вистинска програма, овде има 10 линии код наместо само една линија. Во иднина, ако е потребна друга класа за да го има методот „walk“, ќе мораме да го повториме целиот тој код. Ова не е идеално.
Во програмирањето имаме принцип наречен DRY кој е кратенка за не се повторувај. Да речеме, некогаш во иднина, ќе откриеме проблем со нашиот метод „прошетка“ и ако сме го повториле или дуплицирале овој метод на многу други места, ќе мора да се вратиме и да го решиме тој проблем на секое место каде што сме го дуплирале ова. код. Па затоа во програмирањето не треба да дефинираме нешто два пати.
Постојат различни пристапи за да се реши овој проблем, но овде ќе го научиме оној кој е полесен за почетниците и се нарекува наследување. Во овој случај, ќе создадеме друга класа „цицач“ и ќе го дефинираме нашиот атрибут „прошетка“ во таа класа.
class Mammal:
def walk(self):
print("walk")
Откако ќе ја дефинираме нашата класа „Цицач“, можеме да користиме наследство за да ги пренесеме атрибутите вака:
И класите кучиња и мачки ги наследуваат сите методи на класи дефинирани во нивната матична класа. Сега, можеме да додадеме методи специфични за кучиња како ова:
class Dog:
def bark(self):
print("bark")
Заврши!
Сето ова беше за класите, конструкторите и повторното користење на кодот во класи со концепти за наследување. Сега сме при крај на нашата серија. До овој момент, треба да бидете во можност да произведувате добри, читливи и концизни кодови во Python.
Концептот на модули и пакети ќе го видиме на следното предавање.
Оставете Одговор