Python 클래스 및 객체 [예제 포함]
게시 됨: 2021-06-25OOP(Object-Oriented Programming의 약자)는 기능적 프로그램을 생성하기 위해 객체와 클래스에 의존하는 패러다임입니다. OOP는 코드의 모듈성에서 작동하며 클래스와 개체는 더 큰 소프트웨어 기능과 모듈을 만드는 데 사용할 수 있는 재사용 가능하고 간단한 코드를 작성하는 데 도움이 됩니다. C++, Java 및 Python은 가장 일반적으로 사용되는 세 가지 객체 지향 프로그래밍 언어입니다. 그러나 데이터 과학 및 통계 분석과 같은 오늘날의 사용 사례에서 Python은 다른 두 가지를 능가합니다.
전 세계의 데이터 과학자들이 Python 프로그래밍 언어의 기능에 대해 맹세하기 때문에 이는 놀라운 일이 아닙니다. 데이터 과학 분야에서 경력을 시작할 계획이고 Python을 마스터하려는 경우 클래스와 객체에 대해 아는 것이 최우선 과제여야 합니다.
이 기사를 통해 파이썬에서 객체와 클래스 뒤에 숨은 모든 뉘앙스를 이해하는 데 도움이 될 것이며, 자신만의 클래스를 만들고 작업하는 방법을 시작할 수 있습니다.
목차
파이썬의 클래스
Python의 클래스는 객체가 생성되는 사용자 정의 프로토타입입니다. 간단히 말해서 클래스는 데이터 와 기능 을 함께 묶는 방법입니다. 두 가지 키워드가 중요합니다. 데이터는 인스턴스화되거나 정의된 모든 변수를 의미하는 반면 기능은 해당 데이터에 대해 수행할 수 있는 모든 작업을 의미합니다. 하나의 패키지에 묶인 데이터 및 기능과 함께 우리는 클래스를 얻습니다.
클래스 생성의 필요성을 이해하려면 다음과 같은 간단한 예를 고려하십시오. 나이, 품종, 색상, 체중 등과 같은 다른 특성을 가진 이웃의 고양이를 추적하고 싶다고 가정해 보겠습니다. 목록을 사용하고 요소를 1:1 방식으로 추적할 수 있습니다. 즉, 나이 또는 목록을 사용하여 체중에 대한 나이. 100마리의 다른 고양이가 있다고 가정하면 어떻게 될까요? 추가할 속성이 더 있으면 어떻게 합니까? 이러한 시나리오에서 목록을 사용하면 정리되지 않고 지저분해지는 경향이 있습니다.
그것이 바로 수업이 들어오는 곳입니다!
클래스는 고유한 데이터 멤버(변수)와 멤버 함수가 있는 사용자 정의 데이터 구조를 만드는 데 도움이 됩니다. 클래스에 대한 객체를 생성하여 이러한 변수와 메서드에 간단히 액세스할 수 있습니다(나중에 자세히 설명함). 따라서 어떤 의미에서 클래스는 객체의 청사진과 같습니다.
또한 클래스를 생성하면 새로운 유형의 객체가 자동으로 생성되므로 동일한 유형의 객체를 추가로 생성할 수 있습니다. 각 클래스 인스턴스에는 상태를 유지하기 위해 속성이 첨부될 수 있습니다. 클래스 인스턴스는 자체적으로 상태를 수정하기 위한 메서드(클래스에서 정의한 대로)를 가질 수 있습니다.
Python 클래스에 대한 몇 가지 사항:
- 클래스는 키워드 class를 사용하여 생성됩니다.
- 속성은 생성한 클래스에 특정한 변수입니다.
- 이러한 속성은 본질적으로 항상 공개되며 클래스 이름 뒤에 점 연산자를 사용하여 액세스할 수 있습니다. 예를 들어 ClassName.AttributeName 은 해당 특정 클래스의 특정 속성 세부 정보를 가져옵니다.
클래스 정의 구문:
클래스 클래스 이름:
# 문-1
.
.
.
# 문-N
예를 들어:
클래스 고양이:
통과하다
위의 예에서 class 키워드는 클래스 이름 뒤에 클래스를 생성하고 있음을 나타냅니다(이 경우 Cat). 이 클래스의 역할은 아직 정의되지 않았습니다.
Python에서 클래스 사용의 장점
- 클래스를 사용하면 다양한 유형의 모든 데이터를 한 곳에서 적절하게 구성할 수 있습니다. 이러한 방식으로 코드를 깨끗하고 모듈식으로 유지하여 코드의 가독성을 향상시킵니다.
- 클래스를 사용하면 상속이라는 또 다른 OOP 패러다임의 이점을 누릴 수 있습니다. 이것은 클래스가 다른 클래스의 속성을 상속하는 경우입니다.
- 클래스를 사용하면 모든 표준 연산자를 재정의할 수 있습니다.
- 클래스는 코드를 재사용 가능하게 만들어 프로그램을 훨씬 더 효율적으로 만듭니다.
파이썬의 객체
개체는 단순히 정의한 클래스의 인스턴스입니다. 클래스를 생성하는 순간 자동 인스턴스가 이미 생성됩니다. 따라서 예제에서와 같이 Cat 클래스는 페르시아 품종과 3세의 실제 고양이와 같은 객체를 자동으로 인스턴스화합니다. 다른 속성을 가진 고양이의 다양한 인스턴스를 가질 수 있지만 이해하기 위해서는 클래스가 가이드로 필요합니다. 그렇지 않으면 어떤 정보가 필요한지 모른 채 길을 잃게 될 것입니다.
객체는 크게 세 가지로 특징지어집니다.
- 상태: 이는 개체의 다양한 속성과 개체가 표시할 수 있는 다양한 속성을 나타냅니다.
- 동작: 기본적으로 해당 개체의 메서드를 나타냅니다. 또한 이 특정 개체가 다른 개체와 상호 작용하거나 응답하는 방식을 반영합니다.
- ID: ID는 필요할 때 호출할 수 있는 개체의 고유 이름입니다.
1. 객체 선언
객체 선언은 클래스를 인스턴스화하는 것으로도 알려져 있습니다. 클래스를 정의하는 즉시 기본 객체가 자체적으로 생성되기 때문입니다(앞서 본 것처럼). 이는 해당 클래스의 인스턴스입니다. 마찬가지로 개체를 만들 때마다 본질적으로 클래스의 새 인스턴스를 만드는 것입니다.
앞에서 언급한 세 가지(상태, 행동, 정체성)의 관점에서 모든 인스턴스(객체)는 행동과 상태를 공유하지만 그 정체성은 다릅니다. 하나의 단일 클래스는 프로그래머의 요구에 따라 원하는 수의 개체를 가질 수 있습니다.
아래의 예를 확인하세요. 다음은 클래스를 인스턴스화하는 방법을 설명하는 프로그램입니다.
클래스 고양이:
# 간단한 클래스
# 기인하다
attr1 = "고양이"
attr2 = "고양이"
# 샘플 메소드
def fun(자신):
print("나는", self.attr1)
print("나는 입니다", self.attr2)
# 드라이버 코드
# 객체 인스턴스화
톰 = 고양이()
# 클래스 속성에 접근하기
# 객체를 통한 메소드
인쇄(Tom.attr1)
톰.펀();
이 간단한 프로그램의 출력은 다음과 같습니다.
고양이 같은
나는 고양이과
나는 고양이야
보시다시피 먼저 cat이라는 클래스를 만든 다음 'Tom'이라는 이름으로 개체를 인스턴스화했습니다. 우리가 얻은 세 가지 출력은 다음과 같습니다.
- 고양이 - 이것은 print(Tom.attr1) 명령문의 결과였습니다. Tom은 Cat 클래스의 객체이고 attr1이 Feline으로 설정되었으므로 이 함수는 출력 Feline을 반환합니다.
- 저는 고양이과입니다 – Tom.fun(); Tom이라는 객체를 사용하여 'fun'으로 알려진 cat 클래스의 함수를 호출합니다. Tom 개체는 함수에 속성을 가져오므로 함수는 "I'm feline"이라는 두 문장을 출력합니다.
- 나는 고양이입니다. 위에서 언급한 것과 같은 이유입니다.
이제 Python에서 클래스와 객체가 작동하는 방식을 이해했으므로 몇 가지 필수 메서드를 살펴보겠습니다.
2. 셀프 메소드
클래스에 정의된 모든 메서드는 함수 정의에 추가 첫 번째 매개변수가 있어야 합니다. 이 매개변수는 프로그래머에 의해 어떤 값도 할당되지 않습니다. 그러나 메서드가 호출되면 Python이 메서드에 값을 제공합니다.
결과적으로 인수 없이 함수를 정의하면 기술적으로 여전히 하나의 인수가 있습니다. 이것을 파이썬에서는 'self'라고 합니다. 이것을 더 잘 이해하기 위해 C++에서 포인터의 개념을 수정하거나 Java에서 참조할 수 있습니다. self 메서드는 기본적으로 동일한 방식으로 작동합니다.
이것을 더 잘 이해하기 위해 – 예를 들어 다음과 같이 객체의 메서드를 호출할 때:
myObject.myMethod(arg1, arg2), Python은 자동으로 이를 myClass.myMethod(myObject, arg1, arg2)로 변환합니다.
따라서 개체 자체가 메서드의 첫 번째 인수가 됩니다. 이것이 파이썬의 자기(self)에 관한 것입니다.
3. __init__ 메소드
이 방법은 Java 또는 C++의 생성자와 유사합니다. 생성자와 마찬가지로 init 메소드는 객체의 상태를 초기화하는 데 사용됩니다. 여기에는 개체 생성 시 실행되는 명령(문) 모음이 포함됩니다. 객체가 클래스에 대해 인스턴스화되면 init 메서드는 사용자가 초기화한 메서드를 자동으로 실행합니다.
다음은 더 잘 설명하는 코드 조각입니다.
# init 메소드가 있는 샘플 클래스 클래스 사람:
# 초기화 메소드 또는 생성자 def __init__(자신, 이름): self.name = 이름
# 샘플 메소드 def say_hi(자신): print('안녕하세요, 제 이름은', self.name)
p = 사람("샘") p.say_hi() |
산출:
안녕하세요, 제 이름은 샘입니다.
세계 최고의 대학에서 온라인으로 데이터 분석 과정 을 배우십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.
클래스 및 인스턴스 변수
인스턴스 변수는 각 인스턴스에 고유하지만 클래스 변수는 클래스의 모든 인스턴스가 공유하는 메서드 및 속성에 대한 것입니다. 결과적으로 인스턴스 변수는 기본적으로 값이 생성자 내부에 할당되거나 self가 있는 메서드인 변수입니다. 반면에 클래스 변수는 클래스 내에서 값이 할당된 변수입니다.
생성자(init 메서드)를 사용하여 인스턴스 변수를 정의하는 방법을 이해하려면 다음 코드를 살펴보세요.
클래스 고양이:
# 클래스 변수
동물 = '고양이'
# 초기화 메소드 또는 생성자
def __init__(자신, 품종, 색상):
# 인스턴스 변수
self.breed = 번식
self.color = 색상
# Dog 클래스의 객체
Tom = 고양이("페르시아인", "검은색")
Snowy = 고양이("인디", "흰색")
print("톰 세부정보:')
print('톰은 입니다', Tom.animal)
print('견종: ', Tom.breed)
print('색상: ', Tom.color)
print('\n눈 덮인 세부 정보:')
print("눈은 ', Snowy.animal)
print('견종: ', Snowy.breed)
print('색상: ', Snowy.color)
위의 코드를 한 줄씩 따라하면 다음과 같은 결과가 표시됩니다.
산출:
톰 세부 정보:
톰은 고양이다
견종: 페르시안
검정색
눈 덮인 세부 사항:
스노이는 고양이다
견종: 인디
색상: 흰색
결론적으로
Python은 특히 초보자에게 비교적 쉬운 프로그래밍 언어입니다. 기본 사항을 마스터하면 다양한 Python 라이브러리로 작업하고 데이터 관련 문제를 해결할 수 있습니다. 그러나 여정이 클래스와 객체를 이해하는 것에서 시작되는 동안 다른 객체, 클래스 및 뉘앙스를 사용하여 작업하는 방법도 배워야 한다는 점을 기억하십시오.
이 기사가 파이썬의 클래스와 객체에 대한 궁금증을 해소하는 데 도움이 되었기를 바랍니다. 질문이 있으시면 아래에 댓글을 남겨주세요. 곧 다시 연락드리겠습니다!
직업 변경을 찾고 있고 전문적인 도움을 찾고 있다면 upGrad 가 여기에 있습니다. IIIT-B 와 협력하여 제공되는 데이터 과학의 Executive PG 프로그램을 확인하십시오 . 14개 이상의 프로그래밍 언어 및 도구(Python 포함)에 대해 알아가는 동시에 30개 이상의 산업 관련 프로젝트에 액세스할 수 있습니다. 모든 스트림의 학생들은 학사에서 최소 50%를 득점한 경우 이 프로그램에 등록할 수 있습니다.
85개국 이상의 탄탄한 학습자 기반, 전 세계적으로 40,000명 이상의 유료 학습자, 500,000명 이상의 행복한 일하는 전문가가 있습니다. 우리의 360도 직업 지원은 공부에 대한 노출 및 글로벌 학생들과의 브레인스토밍과 결합되어 학습 경험을 최대한 활용할 수 있습니다.
클래스는 엔터티의 속성과 기능을 바인딩하는 템플릿 또는 청사진입니다. Python에서 class 키워드는 클래스를 정의하는 데 사용됩니다. 유사한 속성을 가진 모든 엔터티 또는 개체는 단일 클래스에 포함될 수 있으며 멤버 함수에서 액세스할 수 있습니다. Python에는 객체 지향, 절차, 기능 및 명령의 네 가지 주요 패러다임이 있습니다. Python은 객체 지향 개념을 강력하게 지원합니다. 그러나 순수한 객체 지향 프로그래밍 언어는 아닙니다. 다른 객체 지향 프로그래밍 언어와 마찬가지로 Python의 클래스에도 세 가지 액세스 수정자가 있습니다.파이썬에서 클래스와 객체는 무엇입니까?
객체는 클래스의 인스턴스입니다. 클래스가 생성되면 객체는 해당 클래스의 모든 정보를 얻습니다. 그것은 실제 값을 가진 존경받는 클래스의 사본과 같습니다. 개체는 세 가지 요소로 분류됩니다.
ㅏ. 상태
비. 행동
씨. 신원 Python은 어떤 프로그래밍 패러다임을 따르나요?
다양한 프로그래밍 패러다임을 지원하는 이유는 CoffeeScript와 같은 일부 스크립팅과 Ruby와 같은 객체지향 프로그래밍 언어의 영향을 크게 받기 때문입니다. 또한 R과 같은 언어와 결합하여 효율성과 계산 능력을 높입니다.
다중 패러다임 언어인 Python은 가장 다재다능한 언어 중 하나로 여겨집니다. 개발, 데이터 분석, 웹 스크래핑 및 자동화에 널리 사용됩니다. 파이썬에서 접근 한정자는 무엇입니까?
ㅏ. Public Access Modifier : public으로 지정된 클래스 멤버는 모든 함수, 즉 멤버 함수와 비멤버 함수에서 직접 액세스할 수 있습니다. 액세스 지정자가 지정되지 않으면 모든 클래스 멤버는 기본적으로 컴파일러에서 공용 멤버로 간주됩니다.
비. Private Access Modifier : 이 클래스 멤버는 다른 클래스 멤버에게 숨겨져 있습니다. 정의된 클래스의 멤버 함수에서만 액세스할 수 있습니다.
씨. Protected Access Modifier : protected로 지정된 클래스 멤버는 동일한 클래스의 멤버 함수에서만 액세스할 수 있으며 클래스 외부에 액세스하려고 하면 오류가 발생합니다. private 및 protected 액세스 지정자의 유일한 주요 차이점은 protected 멤버는 상속될 수 있지만 private 멤버는 상속될 수 없다는 것입니다.