ສາລະບານ[ເຊື່ອງ][ສະແດງ]
ໃນການບັນຍາຍນີ້, ພວກເຮົາຈະຮຽນຮູ້ກ່ຽວກັບຫ້ອງຮຽນ, ຜູ້ກໍ່ສ້າງແລະການສືບທອດໃນ python.
ແນວຄວາມຄິດເຫຼົ່ານີ້ແມ່ນມີຄວາມສໍາຄັນແທ້ໆໃນໂຄງການຂະຫນາດໃຫຍ່ທີ່ປະເພດຕ່າງໆທີ່ຈໍາເປັນເພື່ອກໍານົດ.
ຫ້ອງຮຽນ
ຫ້ອງຮຽນແມ່ນມີຄວາມຈໍາເປັນໃນການຂຽນໂປລແກລມແລະພວກມັນບໍ່ສະເພາະກັບ python. ອື່ນໆຈໍານວນຫຼາຍ ພາສາການຂຽນໂປແກຼມ ສະຫນັບສະຫນູນແນວຄິດຂອງຫ້ອງຮຽນ. ພວກເຮົາໃຊ້ຫ້ອງຮຽນເພື່ອກໍານົດປະເພດຂໍ້ມູນໃຫມ່.
ມາຮອດປະຈຸ, ພວກເຮົາໄດ້ຮຽນຮູ້ກ່ຽວກັບປະເພດຂໍ້ມູນພື້ນຖານໃນ Python ເຊັ່ນ: ຕົວເລກ, ສະຕຣິງ, ແລະ booleans. ເຫຼົ່ານີ້ແມ່ນປະເພດຂໍ້ມູນພື້ນຖານຫຼືງ່າຍດາຍໃນ Python. ພວກເຮົາຍັງໄດ້ເຫັນສອງສາມປະເພດຂໍ້ມູນສະລັບສັບຊ້ອນເຊັ່ນ: ລາຍຊື່ແລະວັດຈະນານຸກົມ.
ໃນຂະນະທີ່ປະເພດເຫຼົ່ານີ້ເປັນປະໂຫຍດທີ່ສຸດ, ພວກມັນບໍ່ສາມາດຖືກນໍາໃຊ້ເພື່ອສ້າງແບບຈໍາລອງແນວຄວາມຄິດທີ່ສັບສົນ. ຕົວຢ່າງ, ຄິດກ່ຽວກັບແນວຄວາມຄິດຂອງຈຸດ, ຫຼືໂຄງຮ່າງການຊື້ເຄື່ອງ. ກະຕ່າຊື້ເຄື່ອງບໍ່ແມ່ນ boolean ຫຼືບັນຊີລາຍຊື່. ມັນເປັນຂໍ້ມູນປະເພດທີ່ແຕກຕ່າງກັນ. ດັ່ງນັ້ນພວກເຮົາສາມາດນໍາໃຊ້ຫ້ອງຮຽນເພື່ອກໍານົດປະເພດໃຫມ່ເພື່ອສ້າງແບບຈໍາລອງແນວຄວາມຄິດທີ່ແທ້ຈິງ.
ຕອນນີ້, ໃຫ້ກໍານົດປະເພດຂໍ້ມູນໃຫມ່ທີ່ເອີ້ນວ່າຈຸດ. ປະເພດໃຫມ່ນີ້ຈະມີວິທີການດັ່ງທີ່ພວກເຮົາໄດ້ກວດເບິ່ງກ່ອນ.
ນີ້ແມ່ນວິທີທີ່ເຈົ້າຈະເຮັດ:
ພວກເຮົາເລີ່ມຕົ້ນໂດຍການກໍານົດຊັ້ນຮຽນໂດຍໃຊ້ຄໍາ "ຊັ້ນ" ແລະທັນທີຫຼັງຈາກນັ້ນພວກເຮົາໃຫ້ຊື່ຫ້ອງຮຽນຂອງພວກເຮົາ.
class Point
ດຽວນີ້, ເບິ່ງສົນທິສັນຍາການຕັ້ງຊື່ທີ່ຂ້ອຍໄດ້ໃຊ້ຢູ່ທີ່ນີ້. ຂ້າພະເຈົ້າໄດ້ຂຽນຕົວພິມໃຫຍ່ເປັນຕົວອັກສອນທໍາອິດຢູ່ທີ່ນີ້, ນີ້ແມ່ນສິ່ງທີ່ພວກເຮົາເອີ້ນວ່າສົນທິສັນຍາການຕັ້ງຊື່ pascal. ສົນທິສັນຍານີ້ແມ່ນແຕກຕ່າງຈາກອັນທີ່ພວກເຮົາໃຊ້ສໍາລັບການຕັ້ງຊື່ຕົວແປແລະຫນ້າທີ່ຂອງພວກເຮົາທີ່ພວກເຮົາສະເຫມີໃຊ້ຕົວອັກສອນຕົວນ້ອຍແລະແຍກຫຼາຍຄໍາໂດຍໃຊ້ເຄື່ອງຫມາຍຂີດກ້ອງ. ແຕ່ເມື່ອຕັ້ງຊື່ຫ້ອງຮຽນ, ພວກເຮົາບໍ່ໃຊ້ຂີດກ້ອງເພື່ອແຍກຫຼາຍຄໍາແທນ, ພວກເຮົາໃຊ້ຕົວອັກສອນທໍາອິດຂອງທຸກໆຄໍາ.
ຫຼັງຈາກກໍານົດຫ້ອງຮຽນຂອງພວກເຮົາ, ຈໍ້າສອງເມັດແມ່ນຖືກນໍາໃຊ້ເຊິ່ງຫມາຍຄວາມວ່າໃນປັດຈຸບັນແມ່ນກໍານົດຕັນ.
class Point:
def move (self):
ໃນບລັອກນີ້, ພວກເຮົາສາມາດກໍານົດຫນ້າທີ່ຫຼືວິທີການທັງຫມົດທີ່ຂຶ້ນກັບຈຸດ. ຕົວຢ່າງ, ພວກເຮົາສາມາດກໍານົດຫນ້າທີ່ທີ່ເອີ້ນວ່າ "ຍ້າຍ" ສໍາລັບການເຄື່ອນຍ້າຍຈຸດ. ໃຫ້ສັງເກດວ່າທັນທີທີ່ພວກເຮົາພິມວົງເລັບເປີດ, PyCharm ຈະເພີ່ມ "ຕົນເອງ" ຢູ່ທີ່ນີ້ໂດຍອັດຕະໂນມັດ. ນີ້ແມ່ນຄໍາສໍາຄັນພິເສດແລະໃຫ້ຂ້ອຍກັບຄືນໄປບ່ອນນີ້ໃນໄວໆນີ້. ໃຫ້ພິມ “ຍ້າຍ” ຢູ່ເທິງເຄື່ອງ.
print("move")
ໃຫ້ກໍານົດວິທີການອື່ນເຊັ່ນ "ແຕ້ມ" ແລະພິມມັນໃສ່ໃນ terminal.
def draw(self):
print("draw")
ພວກເຮົາສໍາເລັດກັບຄໍານິຍາມຂອງຫ້ອງຮຽນ "ຈຸດ" ຂອງພວກເຮົາ. ດ້ວຍປະເພດໃຫມ່ນີ້, ພວກເຮົາສາມາດສ້າງວັດຖຸໃຫມ່. ຫ້ອງຮຽນພຽງແຕ່ກໍານົດ blueprint ຫຼືແມ່ແບບສໍາລັບການສ້າງວັດຖຸທີ່ເປັນຕົວຢ່າງຕົວຈິງໂດຍອີງໃສ່ blueprint ນັ້ນ. ເພື່ອສ້າງວັດຖຸ, ພວກເຮົາພິມຊື່ຂອງຫ້ອງຮຽນຂອງພວກເຮົາແລະຫຼັງຈາກນັ້ນໂທຫາມັນຄືກັນກັບຫນ້າທີ່. ນີ້ສ້າງວັດຖຸໃຫມ່ແລະຫຼັງຈາກນັ້ນສົ່ງຄືນມັນ. ຫຼັງຈາກນັ້ນ, ພວກເຮົາສາມາດເກັບຮັກສາວັດຖຸນັ້ນຢູ່ໃນຕົວແປ. ໃຫ້ຂ້ອຍສະແດງເຈົ້າ:
ໃນທີ່ນີ້ພວກເຮົາໄດ້ກໍານົດ "ຈຸດ 1" ເຊິ່ງເປັນຈຸດສາມມິຕິ. ທ່ານສາມາດເບິ່ງວ່າ, ພວກເຮົາສາມາດພິມພິກັດສ່ວນບຸກຄົນຢູ່ໃນ terminal.
ພວກເຮົາສາມາດໃຊ້ສອງວິທີ "ແຕ້ມ" ແລະ "ຍ້າຍ" ກັບຈຸດນີ້.
ສະນັ້ນເພື່ອສະຫຼຸບຄືນ, ພວກເຮົາໃຊ້ຫ້ອງຮຽນເພື່ອກໍານົດປະເພດໃຫມ່ແລະປະເພດເຫຼົ່ານີ້ສາມາດມີວິທີການທີ່ພວກເຮົາກໍານົດຢູ່ໃນຮ່າງກາຍຂອງຊັ້ນຮຽນ. ຫ້ອງຮຽນສາມາດມີຄຸນລັກສະນະທີ່ພວກເຮົາສາມາດກໍານົດທຸກບ່ອນໃນໂຄງການຂອງພວກເຮົາ.
ຜູ້ກໍ່ສ້າງ
ມາຮອດປະຈຸ, ພວກເຮົາໄດ້ຮຽນຮູ້ວິທີການສ້າງປະເພດໃຫມ່ໂດຍໃຊ້ຫ້ອງຮຽນ. ໃນປັດຈຸບັນມີບັນຫາເລັກນ້ອຍກັບການປະຕິບັດນີ້. ພວກເຮົາສາມາດສ້າງວັດຖຸຈຸດໂດຍບໍ່ມີການປະສານງານ x ຫຼື y ໂດຍໃຊ້ຊັ້ນຮຽນແລະມັນບໍ່ເຫມາະສົມ. ໃຫ້ຂ້ອຍສະແດງໃຫ້ທ່ານເຫັນ.
ໃຫ້ພວກເຮົາສ້າງຈຸດແລະພິມມັນກ່ອນທີ່ພວກເຮົາຈະກໍານົດ x coordinate. ການແລ່ນໂປຣແກຣມຂອງພວກເຮົາສົ່ງຜົນໃຫ້ເກີດຄວາມຜິດພາດໃນລັກສະນະເຊັ່ນນີ້:
ມັນຫມາຍຄວາມວ່າວັດຖຸຈຸດບໍ່ມີຄຸນລັກສະນະທີ່ເອີ້ນວ່າ x. ໃນປັດຈຸບັນບັນຫາແມ່ນວ່າມັນເປັນໄປໄດ້ທີ່ຈະມີວັດຖຸຈຸດໂດຍບໍ່ມີການປະສານງານ x ຫຼື y. ນີ້ບໍ່ມີຄວາມຫມາຍຍ້ອນວ່າທຸກຄັ້ງທີ່ພວກເຮົາເວົ້າກ່ຽວກັບຈຸດໃດຫນຶ່ງ, ພວກເຮົາຈໍາເປັນຕ້ອງຮູ້ວ່າຈຸດນັ້ນຢູ່ໃສ. ເພື່ອແກ້ໄຂບັນຫານີ້, ພວກເຮົາໃຊ້ຕົວກໍ່ສ້າງ. constructor ແມ່ນຟັງຊັນທີ່ຖືກເອີ້ນວ່າໃນເວລາທີ່ສ້າງວັດຖຸ.
ນີ້ແມ່ນວິທີທີ່ພວກເຮົາໃຊ້ constructor. ກ່ອນອື່ນ, ໃຫ້ຜ່ານຄ່າພິກັດ x ແລະ y ໃນໂຄງການຂ້າງເທິງ.
point = Point(10, 20)
print(point.x)
ໃນປັດຈຸບັນ, ພວກເຮົາຈໍາເປັນຕ້ອງໄດ້ເພີ່ມວິທີການພິເສດໃນຫ້ອງຮຽນນີ້ເອີ້ນວ່າ constructor. syntax ຂອງມັນຄືດັ່ງນີ້:
def __init__(self, x, y):
init
ແມ່ນສັ້ນສໍາລັບການເລີ່ມຕົ້ນ, ແລະນີ້ແມ່ນຫນ້າທີ່ຫຼືວິທີການທີ່ຖືກເອີ້ນໃນເວລາທີ່ວັດຖຸຈຸດໃຫມ່ຖືກສ້າງຂື້ນ. x ແລະ y ຖືກເພີ່ມທັນທີຫຼັງຈາກ self
ເພື່ອເພີ່ມສອງຕົວກໍານົດການເພີ່ມເຕີມ.
ຫຼັງຈາກນັ້ນ, ພວກເຮົາຄວນຈະເຮັດແຜນທີ່ x ແລະ y ກັບຄ່າຜ່ານເຊັ່ນ 10 ແລະ 20
self.x = x
self.y = y
ພວກເຮົານໍາໃຊ້ self
ເພື່ອອ້າງອີງເຖິງວັດຖຸປະຈຸບັນແລະຫຼັງຈາກນັ້ນພວກເຮົາກໍານົດຄຸນລັກສະນະ x ກັບ argument x ທີ່ສົ່ງກັບຟັງຊັນ "x". ດ້ວຍວິທີນີ້, ການນໍາໃຊ້ init
ວິທີການ, ພວກເຮົາສາມາດເລີ່ມຕົ້ນວັດຖຸຂອງພວກເຮົາ. ວິທີການນີ້ແມ່ນເອີ້ນວ່າ constructor. ໃຫ້ດໍາເນີນໂຄງການຂອງພວກເຮົາ.
ໃນປັດຈຸບັນ, ພວກເຮົາສາມາດປ່ຽນພິກັດ x ແລະ y ຕໍ່ມາ. ໃຫ້ອັບເດດ x ປະສານງານ:
point = Point(10, 20)
point.x = 11
print(point.x)
ດຽວນີ້, ຈຸດປະສານງານ x ຖືກປັບປຸງເປັນຄ່າ 11.
ອອກກໍາລັງກາຍ
ນີ້ແມ່ນການອອກກໍາລັງກາຍທີ່ຫນ້າສົນໃຈສໍາລັບທ່ານ.
ຂ້າພະເຈົ້າຕ້ອງການໃຫ້ທ່ານກໍານົດປະເພດໃຫມ່ທີ່ເອີ້ນວ່າບຸກຄົນ. ວັດຖຸ "ບຸກຄົນ" ເຫຼົ່ານີ້ຄວນຈະມີ "name
"ຄຸນລັກສະນະເຊັ່ນດຽວກັນກັບ"talk()
” ວິທີການ.
ມັນເປັນວຽກທີ່ງ່າຍດາຍແລະບໍ່ຄວນໃຊ້ເວລາຫຼາຍກວ່າສອງສາມນາທີ.
ການແກ້ໄຂ
ເລີ່ມຕົ້ນດ້ວຍການກໍານົດຊັ້ນ "ບຸກຄົນ" ແບບນີ້:
class Person:
self.name = name
ພວກເຮົາຈະກໍານົດຜູ້ກໍ່ສ້າງຕໍ່ມາ. ໃນປັດຈຸບັນ, ພວກເຮົາສາມາດສ້າງວັດຖຸ "ບຸກຄົນ". ໃຫ້ເອີ້ນມັນວ່າ John
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.
ພວກເຮົາຈະເຫັນແນວຄວາມຄິດຂອງໂມດູນແລະຊຸດໃນການບັນຍາຍຕໍ່ໄປ.
ອອກຈາກ Reply ເປັນ