Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 인스턴스 객체 생성하기 – 클래스 객체 만들기와 속성 다루기

인스턴스 객체 생성하기

클래스의 인스턴스를 생성하려면 함수를 호출하듯이 클래스 이름을 사용하고, 해당 클래스의 __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' 속성 삭제