속성의 값을 가져온다 .
getattr(object , 'name') 이라는 함수는 object 라는 오브젝트 내부의 name 이라는 멤버를 반환한다.
class Car:
def __init__(self , x):
self.x = x
c = Car(1)
c.x # 1
getattr(c , 'x') # 1
멤버변수 의 값을 호출한다.
getattr(c, 'y')
AttributeError: sample instance has no attribute 'y'
하게되면 에러가 발생한다.
하지만 기본값을 설정 할 수가 있다.
getattr(c, 'y', 2) # 2
속성의 값을 바꾸거나 , 생성한다.
보통 setter 를 많이 알고 있을것 같다 하지만 python
에서는
@property.setter
를 사용한다.
class Car:
def __init__(self , x):
self.x = x
@property
def run(self):
return self.x
@run.setter
def run(self , x):
if x < 0:
raise ValueError("Invalid x")
self.x = x
c = Car(1)
c.x # 1
c.run = 2
print(c.run) # 2
이렇게 @property
를 이용하여 getter , setter 를 사용해도 된다.
기존에 값이 있을경우
setattr(c , 'x' , 2)
print(c.x) # 2
기존에 값이 없고 새로 할당할 경우
setattr(c , 'y' , 3)
print(c.y) # 3