Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python AttributeError:A How-To Guide

คุณลักษณะคือค่าหรือฟังก์ชันที่เกี่ยวข้องกับอ็อบเจ็กต์ ชนิดข้อมูล หรือคลาส หากคุณเรียกใช้แอตทริบิวต์จากค่าที่ประเภทข้อมูลหรือคลาสไม่รองรับแอตทริบิวต์นั้น คุณจะพบ 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