일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 머신러닝
- 프로그래밍
- 프로그래밍언어
- 사이버보안
- 빅데이터
- 클라우드컴퓨팅
- 네트워크
- 보안
- 알고리즘
- I'm Sorry
- 자바스크립트
- 자료구조
- 네트워크보안
- 컴퓨터비전
- 컴퓨터과학
- 데이터분석
- 소프트웨어공학
- 버전관리
- Yes
- 2
- 인공지능
- 데이터구조
- 컴퓨터공학
- 데이터베이스
- 웹개발
- 딥러닝
- 소프트웨어
- 코딩
- 파이썬
- 데이터과학
- Today
- Total
스택큐힙리스트
getattr()는 정확히 무엇이며 어떻게 사용하는 것인가요? 본문
나는 article 함수에 대한 글을 읽었지만 그것이 어떤 용도인지 이해할 수 없다.
나는 getattr()에 대해 이해하는 유일한 것은 getattr(li, pop) 가 li.pop 를 부르는 것과 똑같다는 것이다.
언제 그리고 어떻게 정확히 사용하나요? 이 책은 런타임까지 이름을 알 수 없는 함수의 참조를 얻기 위해 사용한다는 것을 언급했지만, 언제나 그리고 왜 이것을 사용해야 할까요?
답변 1
파이썬에서 객체는 속성 - 데이터 속성과 해당 작업을 수행하는 함수(메소드)를 가질 수 있습니다. 실제로 모든 객체에는 내재된 속성이 있습니다 (파이썬 콘솔에서 dir(None) , dir(True) , dir(...) , dir(dir) 를 시도해 보십시오).
예를 들어, 여러 속성을 가진 객체 person가 있다: name, gender 등.
보통 person.name , person.gender , person.the_method() 등을 작성하여 이러한 속성 (메서드 또는 데이터 개체)에 액세스합니다.
그러나 프로그램을 작성하는 동안 속성의 이름을 모를 경우 어떻게 될까요? 예를 들어, 속성의 이름이 attr_name 이라는 변수에 저장되어 있는 경우.
만약
attr_name = 'gender'
그럼, 쓰는 대신에
gender = person.gender
너는 쓸 수 있다 (neoneun sseul su itda)
gender = getattr(person, attr_name)
조금 연습해 봅시다:
Python 3.4.0 (default, Apr 11 2014, 13:05:11)
>>> class Person():
... name = 'Victor'
... def say(self, what):
... print(self.name, what)
...
>>> getattr(Person, 'name')
'Victor'
>>> attr_name = 'name'
>>> person = Person()
>>> getattr(person, attr_name)
'Victor'
>>> getattr(person, 'say')('Hello')
Victor Hello
만약 객체에 지정된 이름의 속성이 없다면 getattr AttributeError 가 증가합니다.
>>> getattr(person, 'age')
Traceback (most recent call last):
File
AttributeError: 'Person' object has no attribute 'age'
그러나 존재하지 않는 속성의 경우 반환할 세 번째 인수로 기본값을 전달할 수 있습니다.
>>> getattr(person, 'age', 0)
0
당신은 모든 속성 이름을 반복하고 그 값들을 얻기 위해 getattr와 함께 dir를 사용할 수 있습니다.
>>> dir(1000)
['__abs__', '__add__', ..., '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']
>>> obj = 1000
>>> for attr_name in dir(obj):
... attr_value = getattr(obj, attr_name)
... print(attr_name, attr_value, callable(attr_value))
...
__abs__
...
bit_length
...
>>> getattr(1000, 'bit_length')()
10
이것의 실용적인 용도는 이름이 test와 call them으로 시작하는 모든 메소드를 찾는 것이다.
setattr와 유사하게 getattr 은 객체의 속성을 이름으로 설정할 수 있는 기능을 제공합니다.
>>> setattr(person, 'name', 'Andrew')
>>> person.name # accessing instance attribute
'Andrew'
>>> Person.name # accessing class attribute
'Victor'
>>>
답변 2
getattr()는 파이썬에서 제공하는 내장 함수 중 하나로, 객체에서 특정 속성 값을 찾아 반환하는 함수입니다. 이 함수는 객체와 속성명을 인자로 받아 해당 객체가 가지고 있는 속성 값 또는 메소드를 반환합니다. 만약 객체가 해당 속성이 없는 경우, 지정된 기본값을 반환하거나 AttributeError 예외를 발생시킵니다.getattr() 함수는 다양한 용도로 사용될 수 있습니다. 예를 들어, 객체에서 동적으로 속성 값을 조회하거나 메소드를 실행하는 것을 가능하게 합니다. 또한, 객체의 속성 값이 없을 경우 예외 처리를 수행할 때 유용하게 사용될 수도 있습니다.
사용 방법은 다음과 같습니다. 먼저, 호출하고자 하는 객체와 속성명을 인자로 전달합니다. 이 때, 속성명은 문자열 형태로 지정해야 합니다. 예를 들어, 객체 obj에서 속성명이 'name'인 값을 가져오려면 다음과 같이 사용합니다.
value = getattr(obj, 'name')
이 코드는 obj 객체에서 'name' 속성 값을 가져와 value 변수에 할당하는 코드입니다. 만약 obj 객체에 'name' 속성이 없는 경우, AttributeError 예외가 발생합니다. 이 경우, 기본값을 지정하고자 한다면 다음과 같이 사용할 수 있습니다.
value = getattr(obj, 'name', 'default_value')
이 코드는 obj 객체에서 'name' 속성 값을 가져오려고 시도하고, 만약 해당 속성 값이 없는 경우 'default_value'를 반환합니다.
getattr() 함수는 매우 유용한 함수 중 하나입니다. 이 함수를 사용하면 객체에서 동적으로 속성 값을 조회하거나 메소드를 실행하는 등의 다양한 작업을 수행할 수 있습니다. 따라서 파이썬을 사용할 때는 이 함수를 잘 숙지하고 사용해보는 것이 좋습니다.