Энэ лекцээр бид python хэлний ангиуд, бүтээгч, өв залгамжлалын талаар суралцах болно.
Эдгээр ойлголтууд нь янз бүрийн төрлийг тодорхойлох шаардлагатай томоохон хөтөлбөрт үнэхээр чухал юм.
ангиуд
Ангиуд нь програмчлалд зайлшгүй шаардлагатай бөгөөд тэдгээр нь python-д хамаарахгүй. Бусад олон програмчлалын хэл ангийн тухай ойлголтыг дэмжих. Бид шинэ өгөгдлийн төрлийг тодорхойлохдоо анги ашигладаг.
Одоогийн байдлаар бид Python дахь тоо, мөр, логикийн үндсэн төрлүүдийн талаар олж мэдсэн. Эдгээр нь Python дахь үндсэн буюу энгийн өгөгдлийн төрлүүд юм. Бид жагсаалт, толь бичиг гэх мэт хэд хэдэн нарийн төвөгтэй өгөгдлийн төрлийг харсан.
Эдгээр төрлүүд нь маш ашигтай боловч нарийн төвөгтэй ойлголтуудыг загварчлахад үргэлж ашиглаж болохгүй. Жишээлбэл, цэгийн санаа, эсвэл дэлгүүрийн тэрэгний тухай бод. Худалдааны тэрэг бол логик эсвэл жагсаалт биш юм. Энэ бол өөр төрлийн өгөгдөл юм. Тиймээс бид бодит ойлголтуудыг загварчлахын тулд шинэ төрлүүдийг тодорхойлохын тулд ангиудыг ашиглаж болно.
Одоо цэг хэмээх шинэ өгөгдлийн төрлийг тодорхойлъё. Энэ шинэ төрөл нь бидний өмнө нь шалгасан аргуудтай байх болно.
Та үүнийг ингэж хийх болно:
Бид "class" түлхүүр үгийг ашиглан ангиа тодорхойлж, дараа нь ангидаа нэр өгдөг.
class Point
Одоо миний энд ашигласан нэрлэх дүрмийг хараарай. Би энд эхний үсгийг томоор бичсэн, үүнийг бид Паскаль нэрлэх конвенц гэж нэрлэдэг. Энэ конвенц нь хувьсагч болон функцуудаа нэрлэхдээ бид үргэлж жижиг үсгээр бичдэг, доогуур зураасаар олон үгийг тусгаарладаг байснаас өөр юм. Гэхдээ бид ангиудыг нэрлэхдээ олон үгийг ялгахын тулд доогуур зураас хэрэглэдэггүй, үг бүрийн эхний үсгийг томоор бичдэг.
Манай ангийг тодорхойлсны дараа хоёр цэг ашигласан бөгөөд энэ нь одоо блок тодорхойлогдсон гэсэн үг юм.
class Point:
def move (self):
Энэ блок дээр бид цэгүүдэд хамаарах бүх функц эсвэл аргуудыг тодорхойлж болно. Жишээлбэл, бид цэгийг шилжүүлэхийн тулд "шилжүүлэх" функцийг тодорхойлж болно. Бид нээлттэй хаалт бичмэгц PyCharm энд автоматаар "өөрийгөө" нэмдэг болохыг анхаарна уу. Энэ бол онцгой түлхүүр үг бөгөөд удахгүй энэ талаар эргэн хэлье. Терминал дээр "хөдөлгөөн" гэж хэвлэцгээе.
print("move")
"зурах" гэх мэт өөр аргыг тодорхойлж, терминал дээр хэвлэ.
def draw(self):
print("draw")
Бид "цэг" ангийнхаа тодорхойлолтыг хийж дууслаа. Энэ шинэ төрлөөр бид шинэ объект үүсгэж болно. Анги нь тухайн зураг төсөл дээр үндэслэсэн бодит жишээ болох объектуудыг үүсгэх загвар эсвэл загварыг энгийнээр тодорхойлдог. Объект үүсгэхийн тулд бид ангийнхаа нэрийг бичээд дараа нь яг функц шиг дууддаг. Энэ нь шинэ объект үүсгэж, дараа нь буцаана. Дараа нь бид тухайн объектыг хувьсагчид хадгалах боломжтой. Би чамд үзүүлье:
Энд бид гурван хэмжээст цэг болох "цэг1"-ийг тодорхойлсон. Та үүнийг харж болно, бид терминал дээр тусдаа координатуудыг хэвлэх боломжтой.
Энэ цэг дээр бид "зурах" болон "хөдөлгөөн" гэсэн хоёр аргыг ашиглаж болно.
Тиймээс бид шинэ төрлүүдийг тодорхойлохдоо ангиудыг ашигладаг бөгөөд эдгээр төрлүүд нь ангийн үндсэн хэсэгт тодорхойлсон аргуудтай байж болно. Ангиуд нь бидний програмын аль ч хэсэгт тохируулж болох шинж чанаруудтай байж болно.
Барилгачид
Одоогийн байдлаар бид ангиудыг ашиглан шинэ төрлийг хэрхэн бүтээх талаар сурсан. Одоо энэ хэрэгжилтэд бага зэрэг асуудал байна. Бид классуудыг ашиглан x эсвэл y координатгүйгээр цэгийн объект үүсгэж болох бөгөөд энэ нь тийм ч тохиромжтой биш юм. Би чамд үзүүлье.
x координатыг тогтоохын өмнө цэг үүсгэж хэвлэцгээе. Манай програмыг ажиллуулахад дараах шинж чанарын алдаа гарч ирдэг:
Энэ нь цэгийн объект нь x гэж нэрлэгддэг шинж чанаргүй гэсэн үг юм. Одоо асуудал нь x эсвэл y координатгүй цэгийн объекттой байх боломжтой юм. Энэ нь утгагүй, учир нь бид ямар нэг цэгийн тухай ярих бүрт тэр цэг хаана байгааг мэдэх хэрэгтэй. Энэ асуудлыг шийдэхийн тулд бид бүтээгчийг ашигладаг. Бүтээгч нь объект үүсгэх үед дуудагддаг функц юм.
Бид бүтээгчийг хэрхэн ашиглахыг энд харуулав. Эхлээд дээрх программ дахь х, у координатын утгуудыг дамжуулъя.
point = Point(10, 20)
print(point.x)
Одоо бид энэ ангид бүтээгч гэж нэрлэгддэг тусгай аргыг нэмэх хэрэгтэй. Түүний синтакс нь дараах байдалтай байна.
def __init__(self, x, y):
init
нь эхлүүлсэн гэсэн үгийн товчлол бөгөөд энэ нь шинэ цэгийн объект үүсгэх үед дуудагдах функц эсвэл арга юм. Үүний дараа x ба у-г нэмнэ 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 утга болгон шинэчилсэн.
Дасгал
Та бүхэнд нэгэн сонирхолтой дасгалыг хүргэж байна.
Би чамайг хүн гэдэг шинэ төрлийг тодорхойлохыг хүсч байна. Эдгээр "Person" объектууд нь "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 мөр код байна гэж бодъё. Цаашид “алхах” аргатай байх өөр анги шаардлагатай бол бид тэр бүх кодыг давтах хэрэгтэй болно. Энэ бол хамгийн тохиромжтой зүйл биш юм.
Програмчлалд бид DRY хэмээх зарчимтай байдаг бөгөөд энэ нь өөрийгөө давтахгүй гэсэн үгийн товчлол юм. Ирээдүйд бид "алхах" аргадаа ямар нэгэн асуудал байгааг олж мэдье гэж бодъё, хэрвээ бид энэ аргыг өөр олон газар давтсан эсвэл давтсан бол бид үүнийг давтсан газар бүртээ буцаж ирээд энэ асуудлыг засах хэрэгтэй болно гэж бодъё. код. Тиймээс програмчлалд бид ямар нэг зүйлийг хоёр удаа тодорхойлж болохгүй.
Энэ асуудлыг шийдэх янз бүрийн арга байдаг боловч бид эндээс эхлэгчдэд илүү хялбар бөгөөд үүнийг өв залгамжлал гэж нэрлэдэг аргыг сурах болно. Энэ тохиолдолд бид "хөхтөн" гэсэн өөр анги үүсгэж, тэр ангид "алхах" шинж чанараа тодорхойлно.
class Mammal:
def walk(self):
print("walk")
"Хөхтөн" ангийг тодорхойлсоны дараа бид дараах шинж чанаруудыг дамжуулахын тулд өв залгамжлалыг ашиглаж болно:
Нохой, муур хоёрын аль аль нь эцэг эх ангидаа тодорхойлсон бүх ангийн аргуудыг өвлөн авдаг. Одоо бид нохойнд зориулсан дараах аргуудыг нэмж болно.
class Dog:
def bark(self):
print("bark")
Дуусгах!
Энэ нь удам угсаатай ангиуд, бүтээгчид болон кодыг дахин ашиглах тухай байсан. Одоо бид цувралынхаа төгсгөлд ойртож байна. Энэ үед та Python хэл дээр сайн, уншигдахуйц, товч код гаргах боломжтой байх ёстой.
Бид дараагийн лекцээр модуль ба багцын тухай ойлголттой танилцах болно.
хариу үлдээх