คุณลักษณะคือค่าหรือฟังก์ชันที่เกี่ยวข้องกับอ็อบเจ็กต์ ชนิดข้อมูล หรือคลาส หากคุณเรียกใช้แอตทริบิวต์จากค่าที่ประเภทข้อมูลหรือคลาสไม่รองรับแอตทริบิวต์นั้น คุณจะพบ AttributeError
คู่มือนี้จะอธิบายว่า AttributeError คืออะไรและหมายความว่าอย่างไร เราจะอธิบายตัวอย่าง AttributeError เพื่อให้คุณได้เรียนรู้วิธีการแก้ไขในโค้ดของคุณ
Python AttributeError คืออะไร
Python AttributeError ปรากฏขึ้นเมื่อคุณพยายามเรียกแอตทริบิวต์ของวัตถุที่ประเภทไม่สนับสนุนวิธีการนั้น ตัวอย่างเช่น พยายามใช้ Python append() วิธีการบนสตริงส่งคืน AttributeError เนื่องจากสตริงไม่สนับสนุน append() .
ในคลาส Python คุณสามารถกำหนดวิธีการและค่าที่แชร์โดยอ็อบเจ็กต์ของคลาสนั้น นี่คือเหตุผลที่บางคนคิดว่าชั้นเรียนเป็นพิมพ์เขียวสำหรับวัตถุ
การเรียกเมธอดหรือคลาสเป็นอีกวิธีหนึ่งในการบอกว่าคุณกำลังอ้างอิงแอตทริบิวต์ของคลาสนั้น วิธีคิดอย่างหนึ่งเกี่ยวกับคุณลักษณะก็เหมือนกับคุณลักษณะทางกายภาพของบุคคล บางคนมีตาสีฟ้า บางคนมีผมย้อมสีชมพู นี่คือคุณลักษณะทั้งหมด
ในคลาส Python แอตทริบิวต์อาจเป็น “eye_color” คุณลักษณะนี้สามารถกำหนดสีของดวงตาของบุคคลได้ แอตทริบิวต์อาจเป็นฟังก์ชันก็ได้ ฟังก์ชันชื่อ changeEyeColor() สามารถเปลี่ยนค่าของ “eye_color” ได้
ชนิดข้อมูลมีคุณสมบัติ ตัวอย่างเช่น คุณสามารถใช้เมธอด Python join() เพื่อแปลงสตริงเป็นรายการ วัตถุสตริงรองรับ join() วิธีการ
หากคุณพยายามอ้างอิงฟังก์ชันหรือค่าที่ไม่เกี่ยวข้องกับคลาสอ็อบเจ็กต์หรือประเภทข้อมูล คุณจะพบ AttributeError
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
ตัวอย่างข้อผิดพลาดของแอตทริบิวต์
มาเขียนโปรแกรมที่รวมรองเท้าสองรายการเข้าด้วยกัน ร้านรองเท้า 2 แห่งกำลังจะควบรวมกิจการและต้องการสร้างรายชื่อรองเท้าที่มีเอกลักษณ์เฉพาะที่ขาย
ในการเริ่มต้น มากำหนดชุด Python ที่มีรองเท้าจากร้าน Harrisons Shoes:
harrisons_shoes = {"Nike Air Force 1 07", "Nike Air Max Plus", "Adidas Gazelle"}
เราใช้วงเล็บปีกกาเพื่อกำหนดชุดของเรา ต่อไป มากำหนดชุดที่มีชื่อรองเท้าที่ทางร้านเสนอให้ซึ่งกำลังรวมเข้ากับแฮร์ริสันส์ ร้านรองเท้านี้มีชื่อว่า Shoe Emporium:
shoe_emporium = {"Adidas Samba", "Adidas Superstar", "Nike Air Max Plus"}
เนื่องจากสองคอลเลกชันนี้เป็นชุด จึงสามารถเก็บได้เฉพาะค่าที่ไม่ซ้ำกันเท่านั้น หมายความว่าเมื่อเรารวมเข้าด้วยกัน เราจะได้ชุดที่ไม่มีค่าซ้ำกัน
ในการเพิ่มชุดของเราเข้าด้วยกัน เราจะใช้ฟังก์ชันในตัวที่เรียกว่า extend():
harrisons_shoes.extend(shoe_emporium) print(harrisons_shoes)
extend() วิธีการเพิ่มรองเท้าทั้งหมดจากชุด “shoe_emporium” เป็นชุด “harrisons_shoes” เราใช้ Python print() คำแถลง. ซึ่งช่วยให้เราเห็นรองเท้าทั้งหมดในชุดใหม่ของเรา เรียกใช้โค้ดของเราแล้วดูว่าเกิดอะไรขึ้น:
Traceback (most recent call last): File "main.py", line 3, in <module> harrisons_shoes.extend(shoe_emporium) AttributeError: 'set' object has no attribute 'extend'
รหัสของเราส่งคืน AttributeError
โซลูชัน AttributeError Python
ข้อความแสดงข้อผิดพลาดบอกเราว่าเราไม่สามารถใช้วิธี extend() บนวัตถุที่มีชนิดข้อมูลเป็นชุด นี่เป็นเพราะ extend() เป็นวิธีรายการ ไม่รองรับชุด
หากเราต้องการรวมสองชุดเข้าด้วยกัน เราต้องใช้เครื่องหมายบวก:
harrisons_shoes.update(shoe_emporium) print(harrisons_shoes)
สิ่งนี้จะเพิ่มเนื้อหาของชุด “shoe_emporium” ไปที่ชุด “harrisons_shoes” จากนั้นเราจะพิมพ์ค่าทั้งหมดในชุด “harrisons_shoes” ไปที่คอนโซล เริ่มต้นโปรแกรมใหม่ของเรา:
{'Nike Air Force 1 07', 'Adidas Superstar', 'Adidas Samba', 'Nike Air Max Plus', 'Adidas Gazelle'}
โปรแกรมของเราส่งคืนชุดพร้อมรองเท้าทั้งหมดจากชุดดั้งเดิมทั้งสองชุด แม้ว่าจะมีหกค่าในสองชุดเดิมของเรา แต่ตอนนี้มีเพียงห้าค่าเท่านั้น เนื่องจากรองเท้า 2 คู่เหมือนกัน และชุดสามารถเก็บได้เฉพาะค่าที่ไม่ซ้ำกันเท่านั้น
โปรแกรมของเราส่งคืนชุดพร้อมรองเท้าทั้งหมดจากชุดดั้งเดิมทั้งสองชุด แม้ว่าจะมีหกค่าในสองชุดเดิมของเรา แต่ตอนนี้มีเพียงห้าค่าเท่านั้น เนื่องจากรองเท้า 2 คู่เหมือนกัน และชุดสามารถเก็บได้เฉพาะค่าที่ไม่ซ้ำกันเท่านั้น
ข้อผิดพลาดแอตทริบิวต์ที่คล้ายกันในการสำรวจ
AttributeErrors เป็นเรื่องปกติอย่างไม่น่าเชื่อ อาจเกิดขึ้นได้เมื่อคุณพยายามเรียกแอตทริบิวต์ของประเภทข้อมูลและคลาสที่ไม่สนับสนุนแอตทริบิวต์ที่คุณอ้างถึง
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นหากคุณพิมพ์ผิดเมื่ออ้างถึงแอตทริบิวต์ Python จะตีความโค้ดของคุณตามที่เป็นอยู่ หากคุณพิมพ์ผิด Python จะแสดงว่าคุณอ้างถึงแอตทริบิวต์ที่ไม่มีอยู่จริง
ตัวอย่างเช่น การใช้ Python split() วิธีการแยกรายการเป็นเรื่องปกติ แต่ split() เป็นวิธีสตริงจึงไม่สามารถใช้แยกรายการได้
สำหรับการอ่านเพิ่มเติม ให้พิจารณาค้นคว้าข้อผิดพลาดต่อไปนี้:
- AttributeError:วัตถุ 'list' ไม่มีแอตทริบิวต์ 'split'
- AttributeError:วัตถุ 'โมดูล' ไม่มีแอตทริบิวต์ 'urlopen'
บทสรุป
ข้อผิดพลาดของแอตทริบิวต์ใน Python จะเพิ่มขึ้นเมื่อมีการอ้างอิงแอตทริบิวต์ที่ไม่ถูกต้อง เพื่อแก้ไขข้อผิดพลาดเหล่านี้ ก่อนอื่นให้ตรวจสอบว่าแอตทริบิวต์ที่คุณเรียกมีอยู่ จากนั้น ตรวจสอบให้แน่ใจว่าแอตทริบิวต์เกี่ยวข้องกับวัตถุหรือประเภทข้อมูลที่คุณกำลังทำงานอยู่
หากแอตทริบิวต์ที่คุณต้องการเชื่อมโยงกับประเภทที่มีอยู่แล้วภายในและไม่มีอยู่ คุณควรมองหาทางเลือกอื่น มีทางเลือกอื่นสำหรับแอตทริบิวต์จำนวนมากที่มีอยู่สำหรับประเภทข้อมูลหนึ่งซึ่งคุณสามารถใช้กับข้อมูลประเภทอื่นได้ ตัวอย่างเช่น ไม่มี extend() วิธีที่มีชุด แต่คุณสามารถใช้ union() เข้าร่วมเป็นชุด
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการเขียนโค้ด Python โปรดอ่านคู่มือ How to Learn Python