Devdit
 

__init__() takes 1 positional argument but 2 were given คือ

1K

ฝึกเขียน 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
แก้ไข 1 ปีที่แล้ว
ชอบ
ลิ้งก์
แชร์
Devdit มีช่อง YouTube แล้ว
เราสร้างวิดีโอเกี่ยวกับเทคโนโลยี ทำตามง่ายๆ