해당 속성의 이름에 해당하는 문자열이 지정된 개체 속성에 액세스(가져오기 또는 설정)하는 방법
의 속성 값을 설정/취득하는 방법t
에 의해 주어진x
?
class Test:
def __init__(self):
self.attr1 = 1
self.attr2 = 2
t = Test()
x = "attr1"
라고 하는 내장 함수가 있습니다.
getattr(object, attrname)
setattr(object, attrname, value)
이 경우
x = getattr(t, 'attr1')
setattr(t, 'attr1', 21)
논리를 클래스 내부에 숨겨두려면 다음과 같은 일반화된 getter 방법을 사용하는 것이 좋습니다.
class Test:
def __init__(self):
self.attr1 = 1
self.attr2 = 2
def get(self,varname):
return getattr(self,varname)
t = Test()
x = "attr1"
print ("Attribute value of {0} is {1}".format(x, t.get(x)))
출력:
Attribute value of attr1 is 1
그것을 훨씬 더 잘 숨길 수 있는 또 다른 접근법은 마법의 방법을 사용하는 것입니다.__getattribute__
하지만 그 메소드 내에서 속성 값을 검색하려고 할 때 해결할 수 없는 무한 루프가 계속 발생했습니다.
또한 사용할 수도 있습니다.vars()
위의 예에서, 당신은 교환할 수 있습니다.getattr(self,varname)
타고return vars(self)[varname]
,그렇지만getattr
와의 차이는 무엇인가에 대한 답에 따라 더 선호될 수 있습니다.
참고: 이 답변은 매우 구식입니다.이 기능은 다음을 사용하는 Python 2에 적용됩니다.new
2008년에 더 이상 사용되지 않는 모듈입니다.
함수 setatr과 getatr에 python이 내장되어 있습니다.클래스의 속성을 설정하고 가져오는 데 사용할 수 있습니다.
간단한 예:
>>> from new import classobj
>>> obj = classobj('Test', (object,), {'attr1': int, 'attr2': int}) # Just created a class
>>> setattr(obj, 'attr1', 10)
>>> setattr(obj, 'attr2', 20)
>>> getattr(obj, 'attr1')
10
>>> getattr(obj, 'attr2')
20
언급URL : https://stackoverflow.com/questions/2612610/how-to-access-get-or-set-object-attribute-given-string-corresponding-to-name-o
'programing' 카테고리의 다른 글
Ruby Regexp 그룹 일치, 한 줄에 변수 할당 (0) | 2023.07.09 |
---|---|
Firestore: 부등식/비등식 쿼리를 수행하는 방법 (0) | 2023.07.09 |
SQL Server에 연결하는 동안 네트워크 관련 오류 또는 인스턴스 관련 오류가 발생한 이유는 무엇입니까? (0) | 2023.07.09 |
모든 현재 데이터베이스 이름을 찾기 위한 SQL Server 쿼리 (0) | 2023.07.09 |
데이터베이스 링크(Oracle)에 있는 모든 테이블을 나열하려면 어떻게 해야 합니까? (0) | 2023.07.09 |