ฝึกเขียน Python OOP ต้องการใช้ constructor method ด้วย __init__() รับค่า name 1 ตัวเป็น arguments แต่พอรันแล้วไม่ผ่านโปรแกรมไม่ทำงานขึ้น error ว่า TypeError: __init__() takes 1 positional argument but 2 were given ปัญหานี้ต้องแก้ไขอย่างไร โค้ดบางส่วนตามด้านล่าง
class Demo:
def __init__( name ):
self.name = name
def hi( self ):
print( "Hi", self.name )
demo = Demo('Robot')
demo.hi()
วิธีแก้ไข
ปัญหานี้เกิดจากไม่ได้กำหนด self ที่ constructor method ของ Python ในส่วนของ def __init__( name ) ซึ่ง keyword self ควรกำหนดเป็น arguments แรก ใช้สำหรับเป็น instance ของ class สามารถแก้ไขโค้ดได้ดังนี้
class Demo:
def __init__( self, name ):
self.name = name
def hi( self ):
print( "Hi", self.name )
demo = Demo('Robot')
demo.hi()
ผลลัพธ์
Hi, Robot