파이썬 Static methods란?
Static methods(정적 메서드)는 파이썬 클래스 내에서 사용되는 메서드 중 하나로, 해당 클래스의 객체에 바인딩되지 않고 클래스 자체에 바인딩됩니다. 이것은 static method가 해당 클래스의 객체 없이 호출될 수 있다는 것을 의미하며, 객체의 상태를 수정할 수 없다는 것을 의미합니다. static method는 주로 객체 수명과 관련이 없는 유틸리티 기능을 구현하는 데 사용됩니다.
Flask에서 정적 메서드(Static methods)는 다음과 같은 상황에서 사용될 수 있습니다.
유틸리티 함수 구현: Flask 애플리케이션에서 자주 사용되는 공통 작업을 처리하기 위해 정적 메서드를 사용할 수 있습니다. 예를 들어, 데이터베이스 연결, 문자열 처리, 파일 조작 등과 같은 작업을 수행하는 유틸리티 함수를 정적 메서드로 정의할 수 있습니다.
헬퍼 함수 구현: Flask 애플리케이션에서 특정 기능 또는 작업을 수행하는 헬퍼 함수를 정의할 때 정적 메서드를 사용할 수 있습니다. 예를 들어, 어떤 데이터를 포맷하거나, 검증하거나, 변환하는 함수를 정적 메서드로 만들어 라우트 핸들러에서 호출할 수 있습니다.
클래스 레벨 작업: 특정 Flask 클래스의 여러 메서드에서 공유해야 하는 상태나 동작이 있다면, 이를 정적 메서드로 구현할 수 있습니다. 이렇게 하면 클래스 수준에서 공통 동작을 관리할 수 있습니다.
팩토리 메서드: 정적 메서드는 클래스의 인스턴스를 생성하는 데 사용될 수 있습니다. 예를 들어, Flask 애플리케이션에서 여러 가지 구성 옵션으로 인스턴스를 생성하는 팩토리 메서드를 정적 메서드로 구현할 수 있습니다.
테스트 목적: Flask 애플리케이션을 테스트하는 데 도움이 되는 테스트 유틸리티 함수를 정적 메서드로 정의할 수 있습니다.
파이썬 Static methods 예제 코드
예제 코드>>
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///mydatabase.db' # SQLite 데이터베이스 사용
db = SQLAlchemy(app)
# 데이터베이스 모델 정의
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
def __init__(self, username, email):
self.username = username
self.email = email
# 정적 메서드로 데이터베이스에 새로운 사용자 추가
@staticmethod
def create_user(username, email):
new_user = User(username=username, email=email)
db.session.add(new_user)
db.session.commit()
# 정적 메서드로 모든 사용자 가져오기
@staticmethod
def get_all_users():
return User.query.all()
if __name__ == '__main__':
# 데이터베이스 초기화
db.create_all()
# 정적 메서드를 사용하여 새로운 사용자 추가
User.create_user('user1', 'user1@example.com')
User.create_user('user2', 'user2@example.com')
# 정적 메서드를 사용하여 모든 사용자 가져오기
users = User.get_all_users()
for user in users:
print(f'ID: {user.id}, Username: {user.username}, Email: {user.email}')
19, 26번 라인: 위와 같이 staticmethod를 사용해서 유져를 만들거나 유저 정보를 가저올 때 User라는 클래스 선업 없이 함수에 접속해서 가져올 수 있게 만들어 줍니다.
39번 라인: User 클래스에서 get_all_users 함수를 선언 없이 사용할 수 있습니다.
위와 같이 flask와 같은 환경에서 DB에 접속되어 있는 상태에서 클래스 선언 없이 DB에 접근이 가능해 지게 된 것입니다.
'파이썬(Python) > Flask' 카테고리의 다른 글
[Python] flask blueprints란? 예제로 쉽게 이해하기(블루프린트, 파이썬) (0) | 2023.08.24 |
---|---|
[Python]flask의 errorhandler와 Exception 예제로 이해하기(파이썬) (0) | 2023.08.23 |
[Python]flask의 cors란? 예제를 통해 차이점 이해하기(flask_cors, 파이썬) (0) | 2023.08.21 |
[Python]vue, axios란? 간단한 console 출력 예제 실습으로 이해하기(flask, 파이썬, log) (0) | 2023.08.18 |
[Python] flask Jinja2 for문, if문, 리스트 출력 예제 실습 및 풀이 (0) | 2023.08.17 |