Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python AttributeError:방법 가이드

속성은 개체, 데이터 유형 또는 클래스와 관련된 값 또는 기능입니다. 데이터 유형이나 클래스가 해당 속성을 지원하지 않는 값에서 속성을 호출하면 AttributeError가 발생합니다.

이 가이드에서는 AttributeError가 무엇이고 그 의미에 대해 설명합니다. 코드에서 오류를 수정하는 방법을 배울 수 있도록 AttributeError의 예를 살펴보겠습니다.

파이썬 속성 오류란 무엇입니까?

유형이 해당 메서드를 지원하지 않는 객체의 속성을 호출하려고 하면 Python AttributeError가 발생합니다. 예를 들어 Python append()을 사용하려고 하면 문자열이 append()를 지원하지 않기 때문에 문자열의 메서드가 AttributeError를 반환합니다. .

Python 클래스에서 해당 클래스의 객체가 공유하는 메서드와 값을 정의할 수 있습니다. 이것이 일부 사람들이 클래스를 객체의 청사진으로 생각하는 이유입니다.

메소드 또는 클래스를 호출하는 것은 해당 클래스의 속성을 참조하고 있다고 말하는 또 다른 방법입니다. 속성에 대해 생각하는 한 가지 방법은 사람의 물리적 속성과 같습니다. 어떤 사람들은 파란 눈을 가지고 있습니다. 어떤 사람들은 분홍색으로 염색된 머리를 가지고 있습니다. 이것들은 모두 속성입니다.

Python 클래스에서 속성은 "eye_color"일 수 있습니다. 이 속성은 사람의 눈 색깔을 정의할 수 있습니다. 속성은 함수일 수도 있습니다. changeEyeColor()라는 함수 "eye_color" 값을 변경할 수 있습니다.

데이터 유형에는 속성이 있습니다. 예를 들어 Python join() 메서드를 사용하여 문자열을 목록으로 변환할 수 있습니다. 문자열 객체는 join()을 지원합니다. 방법.

클래스 개체 또는 데이터 유형과 연결되지 않은 함수 또는 값을 참조하려고 하면 AttributeError가 발생합니다.

참가자의 81%는 부트캠프에 참석한 후 기술 직업 전망에 대해 더 자신감을 느꼈다고 말했습니다. 지금 부트캠프에 참여하십시오.

부트캠프 졸업생은 부트캠프 시작부터 첫 직장을 찾는 데까지 6개월도 채 걸리지 않았습니다.

속성 오류 Python 예제

두 개의 신발 목록을 병합하는 프로그램을 작성해 보겠습니다. 두 신발 가게가 합병을 진행 중이며 그들이 판매하는 모든 독특한 신발 목록을 만들고자 합니다.

시작하기 위해 첫 번째 매장인 Harrisons Shoes의 신발이 포함된 Python 세트를 정의해 보겠습니다.

harrisons_shoes = {"Nike Air Force 1 07", "Nike Air Max Plus", "Adidas Gazelle"}

중괄호를 사용하여 집합을 정의합니다. 다음으로 Harrisons와 합병하는 매장에서 제공하는 신발의 이름으로 세트를 정의해 보겠습니다. 이 신발 가게는 Shoe Emporium이라고 합니다.

shoe_emporium = {"Adidas Samba", "Adidas Superstar", "Nike Air Max Plus"}

이 두 컬렉션은 집합이므로 고유한 값만 저장할 수 있습니다. 즉, 그것들을 더하면 중복 값이 ​​없는 세트를 얻게 됩니다.

세트를 함께 추가하기 위해 extend()라는 내장 함수를 사용할 것입니다.

harrisons_shoes.extend(shoe_emporium)
print(harrisons_shoes)

확장() 메소드는 "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 파이썬 솔루션

오류 메시지는 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'}

우리 프로그램은 두 개의 원래 세트의 모든 신발과 함께 세트를 반환합니다. 원래 두 세트에는 6개의 값이 있었지만 지금은 5개만 있습니다. 두 켤레의 신발이 동일하고 세트에는 고유한 값만 저장할 수 있기 때문입니다.

우리 프로그램은 두 개의 원래 세트의 모든 신발과 함께 세트를 반환합니다. 원래 두 세트에는 6개의 값이 있었지만 지금은 5개만 있습니다. 두 켤레의 신발이 동일하고 세트에는 고유한 값만 저장할 수 있기 때문입니다.

유사한 속성 오류 탐색

AttributeErrors는 매우 일반적입니다. 참조하는 속성을 지원하지 않는 데이터 유형 및 클래스의 속성을 호출하려고 할 때 발생할 수 있습니다.

이러한 오류는 속성을 참조할 때 오타를 만드는 경우에도 발생할 수 있습니다. Python은 코드를 있는 그대로 해석합니다. 오타를 만들면 존재하지 않는 속성을 참조하는 것으로 Python에 나타납니다.

예를 들어 Python split() 사용 목록을 분할하는 방법이 일반적입니다. 하지만 split() 문자열 방식이므로 목록을 분할하는 데 사용할 수 없습니다.

자세한 내용은 다음 오류를 조사하는 것이 좋습니다.

  • 속성 오류:'목록' 개체에 '분할' 속성이 없습니다.
  • 속성 오류:'모듈' 개체에 'urlopen' 속성이 없습니다.

결론

잘못된 속성이 참조되면 Python의 속성 오류가 발생합니다. 이러한 오류를 해결하려면 먼저 호출하는 속성이 존재하는지 확인하십시오. 그런 다음 속성이 작업 중인 개체 또는 데이터 유형과 관련되어 있는지 확인하십시오.

원하는 속성이 기본 제공 유형과 연결되어 있고 존재하지 않는 경우 대안을 찾아야 합니다. 한 데이터 유형에 대해 존재하는 많은 속성에 대한 대안이 다른 데이터 유형에 사용할 수 있습니다. 예를 들어 extend()가 없습니다. 집합이 있는 메서드이지만 union()을 사용할 수 있습니다. 세트에 합류합니다.

Python 코드 작성에 대해 자세히 알아보려면 Python 학습 방법 가이드를 읽어보세요.