Python의 객체 지향 프로그래밍
Alex Yarosh
Content Quality Analyst @ DataCamp
class Employee:
def __init__(self, name, salary):
self.name = name
self.salary = salary
emp1 = Employee("Teo Mille", 50000)
emp2 = Employee("Marta Popov", 65000)
name, salary는 인스턴스 속성입니다self는 인스턴스에 바인딩됩니다class 본문에 클래스 속성을 정의합니다class MyClass:
# 클래스 속성 정의
CLASS_ATTR_NAME = attr_value
class Employee: # 클래스 속성 정의 MIN_SALARY = 30000 #<--- no self.def __init__(self, name, salary): self.name = name # 클래스 이름으로 클래스 속성 접근 if salary >= Employee.MIN_SALARY: self.salary = salary else: self.salary = Employee.MIN_SALARY
MIN_SALARY는 모든 인스턴스가 공유합니다self를 쓰지 마세요ClassName.ATTR_NAME을 사용하세요class Employee: # 클래스 속성 정의 MIN_SALARY = 30000def __init__(self, name, salary): self.name = name # 클래스 이름으로 클래스 속성 접근 if salary >= Employee.MIN_SALARY: self.salary = salary else: self.salary = Employee.MIN_SALARY
emp1 = Employee("TBD", 40000)
print(emp1.MIN_SALARY)
30000
emp2 = Employee("TBD", 60000)
print(emp2.MIN_SALARY)
30000
Circle 클래스의 pi)class MyClass: @classmethod # <--- 데코레이터로 클래스 메서드 선언def my_awesome_method(cls, args...): # <--- cls 인자는 클래스를 가리킴 # 여기서 작업 # 인스턴스 속성은 사용 불가 :(
MyClass.my_awesome_method(args...)
class Employee:
MIN_SALARY = 30000
def __init__(self, name, salary=30000):
self.name = name
if salary >= Employee.MIN_SALARY:
self.salary = salary
else:
self.salary = Employee.MIN_SALARY
__init__()는 하나만 가질 수 있음
@classmethod
def from_file(cls, filename):
with open(filename, "r") as f:
name = f.readline()
return cls(name)
return으로 객체 반환cls(...)는 __init__(...) 호출class Employee:
MIN_SALARY = 30000
def __init__(self, name, salary=30000):
self.name = name
if salary >= Employee.MIN_SALARY:
self.salary = salary
else:
self.salary = Employee.MIN_SALARY
@classmethod
def from_file(cls, filename):
with open(filename, "r") as f:
name = f.readline()
return cls(name)

# Employee()를 직접 호출하지 않고 생성
emp = Employee.from_file("employee_data.txt")
type(emp)
__main__.Employee
Python의 객체 지향 프로그래밍