인스턴스 객체 생성하기
클래스의 인스턴스를 생성하려면 함수를 호출하듯이 클래스 이름을 사용하고, 해당 클래스의 __init__ 메서드가 받는 인수를 함께 전달하면 됩니다.
# Employee 클래스의 첫 번째 객체 생성
emp1 = Employee("Zara", 2000)
# Employee 클래스의 두 번째 객체 생성
emp2 = Employee("Manni", 5000)
객체의 속성(attribute)에 접근할 때는 점(.) 연산자를 사용합니다. 클래스 변수는 아래와 같이 클래스 이름으로 접근합니다.
emp1.displayEmployee() emp2.displayEmployee() print "Total Employee %d" % Employee.empCount
전체 예제
지금까지 살펴본 개념을 모두 합쳐 하나의 완전한 예제로 정리해 보겠습니다.
#!/usr/bin/python
class Employee:
'Common base class for all employees'
empCount = 0
def __init__(self, name, salary):
self.name = name
self.salary = salary
Employee.empCount += 1
def displayCount(self):
print "Total Employee %d" % Employee.empCount
def displayEmployee(self):
print "Name : ", self.name, ", Salary: ", self.salary
# 첫 번째 객체 생성
emp1 = Employee("Zara", 2000)
# 두 번째 객체 생성
emp2 = Employee("Manni", 5000)
emp1.displayEmployee()
emp2.displayEmployee()
print "Total Employee %d" % Employee.empCount
참고: 위 예제는 파이썬 2 스타일의 print 문을 사용합니다. 파이썬 3에서는 print() 함수 형태로 작성해야 합니다.
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Name : Zara ,Salary: 2000 Name : Manni ,Salary: 5000 Total Employee 2
속성 동적으로 추가·수정·삭제하기
Python에서는 클래스와 객체의 속성을 언제든지 자유롭게 추가, 수정 또는 삭제할 수 있습니다.
emp1.age = 7 # 'age' 속성 추가 emp1.age = 8 # 'age' 속성 수정 del emp1.age # 'age' 속성 삭제
속성 접근용 내장 함수
일반적인 문장 대신 다음 내장 함수들을 사용하여 속성에 접근할 수도 있습니다.
- getattr(obj, name[, default]) – 객체의 속성 값을 읽어옵니다.
- hasattr(obj, name) – 해당 속성이 존재하는지 여부를 확인합니다.
- setattr(obj, name, value) – 속성 값을 설정합니다. 속성이 존재하지 않으면 새로 생성됩니다.
- delattr(obj, name) – 해당 속성을 삭제합니다.
hasattr(emp1, 'age') # 'age' 속성이 존재하면 True 반환 getattr(emp1, 'age') # 'age' 속성의 값 반환 setattr(emp1, 'age', 8) # 'age' 속성을 8로 설정 delattr(emp1, 'age') # 'age' 속성 삭제