12: Class & Object

12-2: Class Definition

** ถ้าใช้งานบนมือถือหรือ tablet แนะนำให้ใช้ Chrome หรือ Safari เท่านั้น **

แบบฝึกหัด 12-2 ข้อที่ 1

คลาส Time มีไว้ผลิตอ็อบเจกต์ที่แทนเวลา ภายในอ็อบเจกต์มีตัวแปร hour, minute, และ second เก็บเลขชั่วโมง นาที และวินาที (เป็น int) ตามลำดับ จงเขียนคลาสนี้พร้อมด้วยเมท็อด __init__ เพื่อให้สามารถสร้างอ็อบเจกต์ Time ที่แทนเวลา 10 โมงครึ่ง ด้วยคำสั่ง Time(10, 30, 0)

class Time: def __init__(self, h, m, s): self.hour = h self.minute = m self.second = s import types emptyobj = types.SimpleNamespace() q = "`" clsname = "Time" mname = "__init__" qclsname = q+clsname+q qmname = q+mname+q Ex().check_class_def(clsname, missing_msg="ไม่พบคลาส " + qclsname).\ check_body().check_function_def(mname, missing_msg="ไม่พบเมท็อด " + qmname).multi( has_equal_part_len('args', qmname + " รับพารามิเตอร์สี่ตัว"), check_args('self', missing_msg = "ช่วยเขียนพารามิเตอร์ตัวแรกของ "+ qmname + " ให้เป็น `self`"), check_body().set_context(emptyobj,11,22,33).multi( has_equal_value(name = 'self.hour', #error_msg = "ไม่มี self.hour", incorrect_msg = "ตั้งค่าให้ self.hour ไม่ถูกต้อง"), has_equal_value(name = 'self.minute', #error_msg = "ไม่มี self.minute", incorrect_msg = "ตั้งค่าให้ self.minute ไม่ถูกต้อง"), has_equal_value(name = 'self.second', #error_msg = "ไม่มี self.second", incorrect_msg = "ตั้งค่าให้ self.second ไม่ถูกต้อง") ) )
แบบฝึกหัด 12-2 ข้อที่ 2

คลาส Time มีไว้ผลิตอ็อบเจกต์ที่แทนเวลา ภายในอ็อบเจกต์มีตัวแปร hour, minute, และ second เก็บเลขชั่วโมง นาที และวินาที (เป็น int) ตามลำดับ จงเขียนคลาสนี้พร้อมด้วยเมท็อด __init__ เพื่อให้สามารถสร้างอ็อบเจกต์ Time ที่แทนเวลา 10 โมงครึ่ง ด้วยคำสั่ง Time(10, 30) ข้อนี้ต่างจากข้อที่แล้ว ตรงที่การสร้างอ็อบเจกต์จะกำหนดแค่เลขชั่วโมงกับนาทีเท่านั้น เลขวินาทีจะถูกตั้งเป็น 0 เอง

class Time: def __init__(self, h, m): self.hour = h self.minute = m self.second = 0 import types emptyobj = types.SimpleNamespace() q = "`" clsname = "Time" mname = "__init__" qclsname = q+clsname+q qmname = q+mname+q Ex().check_class_def(clsname, missing_msg="ไม่พบคลาส " + qclsname).\ check_body().check_function_def(mname, missing_msg="ไม่พบเมท็อด " + qmname).multi( has_equal_part_len('args', qmname + " รับพารามิเตอร์สามตัว"), check_args('self', missing_msg = "ช่วยเขียนพารามิเตอร์ตัวแรกของ "+ qmname + " ให้เป็น `self`"), check_body().set_context(emptyobj,11,22).multi( has_equal_value(name = 'self.hour', #error_msg = "ไม่มี self.hour", incorrect_msg = "ตั้งค่าให้ self.hour ไม่ถูกต้อง"), has_equal_value(name = 'self.minute', #error_msg = "ไม่มี self.minute", incorrect_msg = "ตั้งค่าให้ self.minute ไม่ถูกต้อง"), has_equal_value(name = 'self.second', #error_msg = "ไม่มี self.second", incorrect_msg = "self.second ต้องมีค่าเป็น 0") ) )
แบบฝึกหัด 12-2 ข้อที่ 3

คลาส Time มีไว้ผลิตอ็อบเจกต์ที่แทนเวลา ภายในอ็อบเจกต์มีตัวแปร hour, minute, และ second เก็บเลขชั่วโมง นาที และวินาที (เป็น int) ตามลำดับ จงเขียนคลาสนี้พร้อมด้วยเมท็อด __init__ เพื่อให้สามารถสร้างอ็อบเจกต์ Time ที่แทนเวลา 10 โมงครึ่ง ด้วยคำสั่ง Time("10:30:00") (ข้อนี้ต่างจากข้อก่อนนี้ ตรงข้อมูลที่ส่งให้สร้างอ็อบเจกต์ในข้อนี้เป็นสตริงในรูปแบบ ชั่วโมง นาที วินาทีที่คั่นด้วย : )

class Time: def __init__(self, t): x = t.split(":") self.hour = int(x[0]) self.minute = int(x[1]) self.second = int(x[2]) import types emptyobj = types.SimpleNamespace() q = "`" clsname = "Time" mname = "__init__" qclsname = q+clsname+q qmname = q+mname+q Ex().check_class_def(clsname, missing_msg="ไม่พบคลาส " + qclsname).\ check_body().check_function_def(mname, missing_msg="ไม่พบเมท็อด " + qmname).multi( has_equal_part_len('args', qmname + " รับพารามิเตอร์สองตัว"), check_args('self', missing_msg = "ช่วยเขียนพารามิเตอร์ตัวแรกของ "+ qmname + " ให้เป็น `self`"), check_body().set_context(emptyobj,"11:22:33").multi( has_equal_value(name = 'self.hour', #error_msg = "ไม่มี self.hour", incorrect_msg = "ตั้งค่าให้ self.hour ไม่ถูกต้อง"), has_equal_value(name = 'self.minute', #error_msg = "ไม่มี self.minute", incorrect_msg = "ตั้งค่าให้ self.minute ไม่ถูกต้อง"), has_equal_value(name = 'self.second', #error_msg = "ไม่มี self.second", incorrect_msg = "ตั้งค่าให้ self.second ไม่ถูกต้อง") ) )