Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

คลาสและอ็อบเจ็กต์ใน Python สำหรับผู้เริ่มต้น

วันนี้เราจะมาพูดถึงชั้นเรียน ไม่ เราไม่ได้หมายถึงชั้นเรียนในโรงเรียน

ในการเขียนโปรแกรม คลาสมีคำจำกัดความของตัวเอง คลาสคือพิมพ์เขียวที่สร้างโดย 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 ของคุณเองอย่างผู้เชี่ยวชาญแล้ว!