클래스 객체 선언? 질문드립니다..
파이썬은 이제 공부하고 있는 단계라 다른 언어와의 개념차이 때문에 많이 혼란스럽네요..
기본 문법들은 좀 보고, 간단한 rest api 예제 보고 있는 중인데요..
app = Flask(__name__)
api = Api(app)
class Test1(Resource):
def get(self):
try:
return {'status': 'success'}
except Exception as e:
return {'error': str(e)}
api.add_resource(Test1, '/test1')
if __name__ == '__main__':
app.run(host='192.168.0.100', port=5000, debug=True)
Test1 이라는 클래스가 있는데, aaa = Test1() 식으로 써야 하는건줄 알았는데, api.add_resource(Test1, '/test1') 처럼 직접 클래스명이 들어가는 부분이 이해가 가지 않습니다..
그리고 첫줄에
app = 어쩌구
api = 저쩌구(app)
인데, 맨 밑에 main 쪽에는 app.run 인것도 이해가 되지 않습니다... 제가 생각하기에는 main 에는 api 가 들어가야 할 것 같았거든요..
min2744 님 429
2020년 8월 19일 8:33 오후
1개의 답변이 있습니다. 1 / 1 Page
안녕하세요.
Test1 클래스는 Resource라는 클래스를 상속한 클래스네요.
Test1 클래스는 get함수에 self가 있으므로 당연히 aaa = Test1() 처럼 인스턴스화해서 사용되는 클래스가 맞을겁니다.
Test1클래스를 인스턴스화하는 부분은 아마도 api.add_resource(Test1, '/test1') 이 부분에 포함되어 있을것 같네요.
만약 파이참등을 사용하신다면 쉽게 add_resource 함수가 어떻게 구현되었는지 확인하실 수 있을 겁니다.
지금 눈에 보이지는 않지만 안으로 들어가면 확인이 가능할 거에요.
그리고 플라스크는 app = Flask(__name__) 처럼 app 을 만들면 app.run 으로 서비스를 구동하는 것이 일반적인 방법입니다.
다만 api = Api(app) 으로 Api 클래스를 이용하여 app을 제어하는 부분이 잘 이해가 안되시는것 같습니다.
app 객체를 먼저 생성하고 Api클래스가 app객체를 입력으로 객체를 생성했기 때문에 Api클래스 안에서 아마도 app을 이용하여
또 무언가를 할 것입니다.
그 무엇인가는 그냥 그렇구나 이해하셔도 되고 아니면 직접 따라 들어가서 도대체 app을 어떻게 건드리는지 확인해 보셔도 됩니다.
도움이 되셨기를 바랍니다.
박응용 님
2020년 8월 20일 9:42 오전