python - getattr() , setattr()

ash3767·2021년 6월 3일
0

파이썬

목록 보기
31/31

📌getattr()

속성의 값을 가져온다 .

👉instance , init , 멤버변수

getattr(object , 'name') 이라는 함수는 object 라는 오브젝트 내부의 name 이라는 멤버를 반환한다.

class Car:
    def __init__(self , x):
        self.x = x
        
c = Car(1)
c.x # 1

👉 getattr() 사용

getattr(c , 'x') # 1

멤버변수 의 값을 호출한다.

getattr(c, 'y') 

AttributeError: sample instance has no attribute 'y'

하게되면 에러가 발생한다.

하지만 기본값을 설정 할 수가 있다.

getattr(c, 'y', 2) # 2

📌setattr()

속성의 값을 바꾸거나 , 생성한다.

보통 setter 를 많이 알고 있을것 같다 하지만 python 에서는

@property.setter 를 사용한다.

👉@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

기존에 값이 있을경우

setattr(c , 'x' , 2)
print(c.x) # 2

기존에 값이 없고 새로 할당할 경우

setattr(c , 'y' , 3)
print(c.y) # 3
profile
꾸준함이란 ... ?

0개의 댓글