เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การ Overload ตัวดำเนินการความเท่ากัน

เมื่อเปรียบเทียบออบเจ็กต์สองตัวของคลาสที่กำหนดเองด้วย == Python จะเปรียบเทียบตำแหน่งในหน่วยความจำที่ออบเจ็กต์ชี้ไปตามค่าเริ่มต้น ไม่ใช่ข้อมูลที่อยู่ภายในออบเจ็กต์ หากต้องการเปลี่ยนพฤติกรรมนี้ คลาสสามารถกำหนดเมธอดพิเศษที่รับอาร์กิวเมนต์สองตัว ได้แก่ ออบเจ็กต์ที่ต้องการเปรียบเทียบ และคืนค่าเป็น True หรือ False เมธอดนี้จะถูกเรียกใช้โดยอัตโนมัติเมื่อมีการเปรียบเทียบออบเจ็กต์สองตัว

คลาส BankAccount จากบทที่แล้วมีให้ใน script.py แล้ว คลาสนี้มีสองแอตทริบิวต์คือ balance และ number รวมถึงเมธอด withdraw() บัญชีธนาคารสองบัญชีที่มียอดเงินเท่ากันไม่ได้หมายความว่าเป็นบัญชีเดียวกัน แต่โดยปกติบัญชีธนาคารจะมี หมายเลขบัญชี และบัญชีสองบัญชีที่มีหมายเลขบัญชีเดียวกันควรถือว่าเป็นบัญชีเดียวกัน

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Python เบื้องต้นสำหรับการเขียนโปรแกรมเชิงวัตถุ

ดูคอร์ส

คำแนะนำการฝึกหัด

  • แก้ไขเมธอด __init__() ให้รับอาร์กิวเมนต์ใหม่ชื่อ number และกำหนดค่าเริ่มต้นให้แอตทริบิวต์ number
  • กำหนดเมธอดสำหรับตรวจสอบว่าแอตทริบิวต์ number ของออบเจ็กต์สองตัวมีค่าเท่ากันหรือไม่

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

class BankAccount:
  # Modify to initialize a number attribute
  def __init__(self, ____, balance=0):
    self.balance = balance
    ____
      
  def withdraw(self, amount):
    self.balance -= amount 
    
  # Define __eq__ that returns True if the number attributes are equal 
  def ____(____, ____):
    return ____.number == ____.____   

# Create accounts and compare them       
acct1 = BankAccount(123, 1000)
acct2 = BankAccount(123, 1000)
acct3 = BankAccount(456, 1000)
print(acct1 == acct2)
print(acct1 == acct3)
    
แก้ไขและรันโค้ด