วันนี้เราจะมาพูดถึงชั้นเรียน ไม่ เราไม่ได้หมายถึงชั้นเรียนในโรงเรียน
ในการเขียนโปรแกรม คลาสมีคำจำกัดความของตัวเอง คลาสคือพิมพ์เขียวที่สร้างโดย coder สำหรับวัตถุ มันกำหนดข้อมูลที่สามารถเก็บไว้ในวัตถุและวิธีการที่สามารถดำเนินการกับวัตถุนั้น
Python เป็นภาษาโปรแกรมเชิงวัตถุ ซึ่งหมายความว่าใช้รูปแบบการพัฒนาที่ใช้วัตถุและคลาสเพื่อเก็บข้อมูล
วิธีการเชิงวัตถุช่วยลดการซ้ำซ้อนในโค้ดของคุณ ซึ่งทำให้ง่ายต่อการอ่านและดูแลโค้ดของคุณ คลาสและอ็อบเจ็กต์เป็นส่วนหนึ่งของภาษาการเขียนโปรแกรมมากมาย เช่น Java, Python และ C++
ในคู่มือนี้ เราจะพูดถึงคลาสต่างๆ ว่ามันทำงานอย่างไร และคุณจะประกาศคลาสใน Python ได้อย่างไร เราจะอธิบายตัวอย่างบางส่วนเพื่อช่วยเหลือคุณ
คลาสคืออะไร
คลาสคือพิมพ์เขียวที่คุณใช้เพื่อกำหนดวัตถุ
ลองนึกภาพว่าคุณกำลังดูพิมพ์เขียวสำหรับบ้าน พิมพ์เขียวนั้นจะสรุปว่าประตูจะไปที่ใด จะวางหน้าต่างไว้ที่ใด และอื่นๆ คลาสในการเขียนโปรแกรมจะคล้ายกัน คลาสจัดเตรียมพิมพ์เขียวเกี่ยวกับข้อมูลที่สามารถจัดเก็บไว้ในออบเจกต์ได้
คลาสถูกกำหนดโดยใช้ class
คำสำคัญ. มาเริ่มกันโดยกำหนดคลาสที่เรียกว่า Player ซึ่งมี 2 ฟังก์ชัน:
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
ผู้เล่นคลาส:
""" This is a class for a player """ name = "Luke" def wield_sword(self): print("You have wielded your sword.") def drink_health_potion(self): print("You have consumed a health potion.")
คลาสนี้เป็นตัวแทนของผู้เล่นในวิดีโอเกม มีทั้งแอตทริบิวต์และวิธีการ แอตทริบิวต์มักจะเรียกว่าตัวแปรอินสแตนซ์เมื่ออยู่ภายในคลาส
วิธีหนึ่งให้คุณกวัดแกว่งดาบ และอีกวิธีหนึ่งให้คุณดื่มยาเพื่อสุขภาพ คลาสประกอบด้วยตัวแปรคลาสหนึ่งตัว:ชื่อ สิ่งนี้จะเก็บชื่อเริ่มต้นสำหรับผู้เล่นของเรา
สังเกตว่าเราใช้คำว่า self
สองสามครั้งในรหัสนี้ ตัวตนคือสิ่งที่ดูเหมือน:การเป็นตัวแทนของชั้นเรียน Self มีค่าทั้งหมดที่เก็บไว้ในคลาสใดคลาสหนึ่ง ดังนั้นคุณจึงสามารถเข้าถึงได้ทั้งหมดภายในเมธอดของคุณ
เมื่อเรารันโค้ดของเรา ไม่มีอะไรเกิดขึ้น เกิดอะไรขึ้น? จำได้ไหมว่าเราพูดว่าชั้นเรียนเป็นพิมพ์เขียว? นั่นเป็นเหตุผลที่ไม่มีอะไรเกิดขึ้น เราต้องทำอะไรบางอย่างกับพิมพ์เขียวของเราเพื่อให้มีประโยชน์
วัตถุคืออะไร
วัตถุเป็นอินสแตนซ์เดียวของคลาส ถูกกำหนดโดยใช้พิมพ์เขียวที่สร้างโดยชั้นเรียน
มาสร้างวัตถุสำหรับผู้เล่นใหม่ในเกมของเรากันเถอะ ลุค:
luke = Player()
เราเพิ่งสร้างวัตถุที่เรียกว่าลุค ออบเจ็กต์ของเราสามารถเข้าถึงข้อมูลทั้งหมดที่จัดเก็บไว้ในคลาสของเราได้ เช่นเดียวกับเมธอดที่เกี่ยวข้องกับคลาสของเรา:
luke = Player() print(luke.name) luke.wield_sword()
รหัสของเราส่งคืน:
ลุค
คุณได้กวัดแกว่งดาบของคุณ
ในโค้ดของเรา เราได้พิมพ์ค่าของ name
คุณลักษณะในวัตถุลุคของเรา ในการเข้าถึงแอตทริบิวต์ในชั้นเรียน คุณต้องระบุชื่อของชั้นเรียน ตามด้วยจุด ตามด้วยแอตทริบิวต์ของอินสแตนซ์ที่คุณต้องการเข้าถึง ซึ่งมักเรียกว่า dot notation
.
โดยค่าเริ่มต้น ค่าของ name
ถูกกำหนดให้เป็นลุค เราจะพูดถึงวิธีเปลี่ยนแปลงสิ่งนี้ในไม่กี่นาที
เรายังเรียก wield_sword()
. ของเรา ระดับ. เมื่อเราเรียกคลาสนี้ เนื้อหาของ wield_sword()
วิธีการในคลาส Player ของเราถูกดำเนินการ นั่นทำให้ข้อความถูกพิมพ์ไปที่คอนโซลโดยระบุว่า” “คุณกวัดแกว่งดาบของคุณ”
คุณสามารถประกาศออบเจ็กต์ของคลาสได้มากเท่าที่คุณต้องการ:นั่นคือสาเหตุที่คลาสนั้นทรงพลังมาก คุณสามารถใช้เมธอดและค่าดีฟอลต์เดิมที่เก็บไว้ในคลาสซ้ำกับออบเจ็กต์ต่างๆ ได้
ตัวสร้างคลาส
ตัวสร้างช่วยให้คุณเริ่มต้นข้อมูลภายในคลาสได้ เมธอด Constructor จะดำเนินการทันทีหลังจากที่คุณประกาศอ็อบเจ็กต์ของคลาสใดคลาสหนึ่ง
ชื่อของคอนสตรัคเตอร์คือ __init__()
. คุณอาจเคยชินกับการดูฟังก์ชันที่มีขีดล่างคู่ (__) ในโค้ดของคุณ ฟังก์ชันเหล่านี้เรียกว่าฟังก์ชันพิเศษเนื่องจากมีวัตถุประสงค์ที่กำหนดไว้ล่วงหน้า ในกรณีนี้ จุดประสงค์ของ __init__
คือการเริ่มต้นชั้นเรียนของเรา
อัปเดตคลาส Player ที่เราสร้างไว้ก่อนหน้านี้เพื่อรวมวิธีนี้ไว้ที่ด้านบนสุดของคลาส:
def __init__(self): print("Your character has been created.")
เมธอดนี้ต้องมาก่อนกำหนดตัวแปรหรือเมธอดในคลาสของคุณ เรียกใช้รหัสหลักของเราจากก่อนหน้านี้อีกครั้ง:
luke = Player() print(luke.name) luke.wield_sword()
รหัสของเราส่งคืน:
สร้างตัวละครของคุณแล้ว
ลุค
คุณได้กวัดแกว่งดาบของคุณ
เราไม่ได้เรียก __init__
วิธีในโปรแกรมหลักของเราแต่มันทำงานต่อไป นั่นเป็นเพราะว่าตัวสร้างจะถูกดำเนินการโดยอัตโนมัติเมื่อคุณสร้างวัตถุของคลาส
ก่อนหน้านี้เราได้กำหนดค่าของ name
ตัวแปรในชั้นเรียนของเราถึงลุค แม้ว่าสิ่งนี้จะมีประโยชน์หากเราต้องการเรียกผู้เล่นของเราว่าลุค แต่ก็ไม่มีประโยชน์หากผู้เล่นสามารถมีชื่อต่างกันได้
นั่นคือสิ่งที่คอนสตรัคเตอร์เข้ามา มาสร้างคอนสตรัคเตอร์ที่ช่วยให้เราสามารถกำหนดชื่อให้กับผู้เล่นของเรา:
class Player: def __init__(self, name): self.name = name
รหัสนี้ช่วยให้เราส่งพารามิเตอร์ไปยังแต่ละวัตถุของ Player พารามิเตอร์นี้จะแสดงชื่อของผู้เล่น จากนั้นเราจะสร้างวิธีการที่บอกชื่อผู้เล่นของเรา:
class Player: def __init__(self, name): self.name = name def get_name(self): print("Your name is " + self.name)
มาสร้างตัวอย่างใหม่ของคลาส Player ของเราสำหรับผู้เล่นชื่อ Leah:
leah = Player("Leah") leah.get_name()
รหัสของเราส่งคืน:
คุณชื่อลีอาห์
เราได้กำหนดค่าของ name
ตัวแปรในวัตถุของเรากับลีอาห์ ซึ่งหมายความว่าไม่ว่าเราจะอ้างอิงถึงสิ่งใดในชั้นเรียน คุณค่าของมันคือลีอาห์ ตัวสร้างจะดำเนินการทันทีที่เราสร้างวัตถุของคลาสของเรา ดังนั้นเราจึงไม่ต้องกังวลกับการเรียกมัน
เราก็เรียกเมธอด get_name()
ซึ่งพิมพ์ชื่อที่เกี่ยวข้องกับผู้เล่นของเรา
คุณสามารถเพิ่มพารามิเตอร์ให้กับคลาสได้มากเท่าที่คุณต้องการ:
class Player: def __init__(self, name, player_type): self.name = name self.player_type = player_type def get_name(self): print("Your name is " + self.name) def get_player_type(self): print(self.name + " is a " + self.player_type + ".")
ในตัวอย่างนี้ คลาส Player ของเรารองรับสองพารามิเตอร์ หนึ่งแทนชื่อของผู้เล่น (ชื่อ) และอีกอันแสดงถึงประเภทของผู้เล่นนั้น (player_type
). มาสร้างวัตถุของคลาสนี้กัน:
leah = Player("Leah", "Mage") leah.get_name() leah.get_player_type()
รหัสของเราส่งคืน:
คุณชื่อลีอาห์
ลีอาห์เป็นจอมเวทย์
ค่าเริ่มต้นทั้งสองที่เราระบุสามารถเข้าถึงได้ในชั้นเรียนของเรา
บทสรุป
ชั้นเรียนช่วยให้คุณลดการซ้ำซ้อนในรหัสของคุณ เมื่อคุณกำหนดคลาสแล้ว คุณสามารถใช้โครงสร้างของคลาสเพื่อกำหนดออบเจกต์ได้มากเท่าที่คุณต้องการ เนื่องจากการซ้ำซ้อนที่ลดลง โค้ดของคุณควรอ่านง่ายกว่า ดังนั้นจึงดูแลรักษาง่ายกว่า
ตอนนี้คุณพร้อมที่จะเริ่มเขียนคลาส Python ของคุณเองอย่างผู้เชี่ยวชาญแล้ว!