python
이 자습서에서는 예제를 통해 Python의 객체 지향 프로그래밍(OOP)과 기본 개념에 대해 알아봅니다.
Python은 다중 패러다임 프로그래밍 언어입니다. 다양한 프로그래밍 접근 방식을 지원합니다.
프로그래밍 문제를 해결하는 인기 있는 방법 중 하나는 객체를 만드는 것입니다. 이것을 객체 지향 프로그래밍(OOP)이라고 합니다.
개체에는 두 가지 특성이 있습니다.
예를 들어 보겠습니다.
앵무새는 다음과 같은 속성을 가지므로 개체입니다.
Python의 OOP 개념은 재사용 가능한 코드를 만드는 데 중점을 둡니다. 이 개념은 DRY(Don't Repeat Yourself)라고도 합니다.
Python에서 OOP의 개념은 몇 가지 기본 원칙을 따릅니다.
<시간>클래스는 객체의 청사진입니다.
클래스는 레이블이 있는 앵무새의 스케치로 생각할 수 있습니다. 이름, 색상, 크기 등에 대한 모든 세부 정보가 포함되어 있습니다. 이러한 설명을 기반으로 앵무새에 대해 연구할 수 있습니다. 여기에서 앵무새는 개체입니다.
앵무새 클래스의 예는 다음과 같습니다.
class Parrot: pass
여기서는 class
을 사용합니다. 빈 클래스를 정의하는 키워드 Parrot . 클래스에서 인스턴스를 구성합니다. 인스턴스는 특정 클래스에서 생성된 특정 개체입니다.
객체(인스턴스)는 클래스의 인스턴스화입니다. 클래스가 정의되면 객체에 대한 설명만 정의됩니다. 따라서 메모리나 스토리지가 할당되지 않습니다.
parrot 클래스의 개체에 대한 예는 다음과 같습니다.
obj = Parrot()
여기, obj Parrot
클래스의 객체입니다. .
앵무새에 대한 세부 정보가 있다고 가정합니다. 이제 앵무새의 클래스와 객체를 만드는 방법을 보여드리겠습니다.
class Parrot:
# class attribute
species = "bird"
# instance attribute
def __init__(self, name, age):
self.name = name
self.age = age
# instantiate the Parrot class
blu = Parrot("Blu", 10)
woo = Parrot("Woo", 15)
# access the class attributes
print("Blu is a {}".format(blu.__class__.species))
print("Woo is also a {}".format(woo.__class__.species))
# access the instance attributes
print("{} is {} years old".format( blu.name, blu.age))
print("{} is {} years old".format( woo.name, woo.age))
출력
Blu is a bird Woo is also a bird Blu is 10 years old Woo is 15 years old
위의 프로그램에서 우리는 Parrot라는 이름의 클래스를 생성했습니다. . 그런 다음 속성을 정의합니다. 속성은 개체의 특성입니다.
이러한 속성은 __init__
안에 정의되어 있습니다. 클래스의 메소드. 객체가 생성되자마자 가장 먼저 실행되는 초기화 메소드입니다.
그런 다음 Parrot의 인스턴스를 만듭니다. 수업. 여기, 블루 그리고 우 새 개체에 대한 참조(값)입니다.
__class__.species
를 사용하여 클래스 속성에 액세스할 수 있습니다. . 클래스 속성은 클래스의 모든 인스턴스에 대해 동일합니다. 마찬가지로 blu.name
을 사용하여 인스턴스 속성에 액세스합니다. 및 blu.age
. 그러나 인스턴스 속성은 클래스의 모든 인스턴스에 대해 다릅니다.
클래스 및 객체에 대해 자세히 알아보려면 Python 클래스 및 객체로 이동
<시간>메서드는 클래스 본문 내부에 정의된 함수입니다. 개체의 동작을 정의하는 데 사용됩니다.
class Parrot:
# instance attributes
def __init__(self, name, age):
self.name = name
self.age = age
# instance method
def sing(self, song):
return "{} sings {}".format(self.name, song)
def dance(self):
return "{} is now dancing".format(self.name)
# instantiate the object
blu = Parrot("Blu", 10)
# call our instance methods
print(blu.sing("'Happy'"))
print(blu.dance())
출력
Blu sings 'Happy' Blu is now dancing
위의 프로그램에서 sing()
라는 두 가지 방법을 정의합니다. 및 dance()
. 이들은 인스턴스 객체(예:blu
)에서 호출되기 때문에 인스턴스 메서드라고 합니다. .
상속은 기존 클래스의 내용을 수정하지 않고 그대로 사용하기 위해 새로운 클래스를 생성하는 방법이다. 새로 형성된 클래스는 파생 클래스(또는 자식 클래스)입니다. 마찬가지로 기존 클래스는 기본 클래스(또는 상위 클래스)입니다.
# parent class
class Bird:
def __init__(self):
print("Bird is ready")
def whoisThis(self):
print("Bird")
def swim(self):
print("Swim faster")
# child class
class Penguin(Bird):
def __init__(self):
# call super() function
super().__init__()
print("Penguin is ready")
def whoisThis(self):
print("Penguin")
def run(self):
print("Run faster")
peggy = Penguin()
peggy.whoisThis()
peggy.swim()
peggy.run()
출력
Bird is ready Penguin is ready Penguin Swim faster Run faster
위의 프로그램에서 Bird라는 두 개의 클래스를 만들었습니다. (상위 클래스) 및 Penguin (자식 클래스). 자식 클래스는 부모 클래스의 기능을 상속합니다. swim()
에서 이를 확인할 수 있습니다. 방법.
다시 말하지만, 자식 클래스는 부모 클래스의 동작을 수정했습니다. whoisThis()
에서 확인할 수 있습니다. 방법. 또한 새로운 run()
를 생성하여 상위 클래스의 기능을 확장합니다. 방법.
또한 super()
를 사용합니다. __init__()
내부의 함수 방법. 이를 통해 __init__()
을 실행할 수 있습니다. 자식 클래스 안에 있는 부모 클래스의 메소드
Python에서 OOP를 사용하여 메서드 및 변수에 대한 액세스를 제한할 수 있습니다. 이렇게 하면 캡슐화라고 하는 데이터가 직접 수정되는 것을 방지할 수 있습니다. Python에서는 밑줄을 접두사로 사용하여 개인 속성을 나타냅니다. 즉, 단일 _
또는 이중 __
.
class Computer:
def __init__(self):
self.__maxprice = 900
def sell(self):
print("Selling Price: {}".format(self.__maxprice))
def setMaxPrice(self, price):
self.__maxprice = price
c = Computer()
c.sell()
# change the price
c.__maxprice = 1000
c.sell()
# using setter function
c.setMaxPrice(1000)
c.sell()
출력
Selling Price: 900 Selling Price: 900 Selling Price: 1000
위의 프로그램에서 Computer를 정의했습니다. 수업.
__init__()
을 사용했습니다. Computer
의 최대 판매가를 저장하는 메소드 . 여기에서 코드를 확인하세요.
c.__maxprice = 1000
여기에서 __maxprice 값을 수정하려고 했습니다. 수업 밖. 그러나 __maxprice 이후 개인 변수이므로 이 수정 사항은 출력에 표시되지 않습니다.
표시된 대로 값을 변경하려면 setMaxPrice()
와 같은 setter 함수를 사용해야 합니다. 가격을 매개변수로 사용합니다.
다형성은 여러 형식(데이터 유형)에 대해 공통 인터페이스를 사용하는 기능(OOP에서)입니다.
모양에 색상을 지정해야 하고 여러 모양 옵션(사각형, 정사각형, 원)이 있다고 가정합니다. 그러나 동일한 방법을 사용하여 모든 모양을 색칠할 수 있습니다. 이 개념을 다형성이라고 합니다.
class Parrot:
def fly(self):
print("Parrot can fly")
def swim(self):
print("Parrot can't swim")
class Penguin:
def fly(self):
print("Penguin can't fly")
def swim(self):
print("Penguin can swim")
# common interface
def flying_test(bird):
bird.fly()
#instantiate objects
blu = Parrot()
peggy = Penguin()
# passing the object
flying_test(blu)
flying_test(peggy)
출력
Parrot can fly Penguin can't fly
위의 프로그램에서 두 개의 클래스 Parrot를 정의했습니다. 및 펭귄 . 각각에는 공통 fly()
이 있습니다. 방법. 그러나 기능이 다릅니다.
다형성을 사용하기 위해 공통 인터페이스(예:flying_test()
)를 만들었습니다. 모든 객체를 취하고 객체의 fly()
을 호출하는 함수 방법. 따라서 blu를 전달하면 그리고 페기 flying_test()
의 개체 효과적으로 실행되었습니다.
python
Python 데이터 클래스는 @dataclass이 있는 일반 Python 클래스입니다. 장식가. 데이터를 보관하기 위해 특별히 만들어졌습니다. Python 버전 3.7부터 Python은 dataclass이라는 내장 모듈을 통해 데이터 클래스를 제공합니다. . 이 기사에서 살펴볼 일반 Python 클래스에 비해 몇 가지 장점이 있습니다. 또한 예제 코드와 데이터 클래스로 수행할 수 있는 몇 가지 일반적인 작업을 살펴보겠습니다. 목차 데이터 클래스 사용의 이점 Python 데이터 클래스 예시 기본값 데이터 클래스를 JSON으로 변환
이전 페이지다음 페이지 Python은 그래픽 사용자 인터페이스(GUI) 개발을 위한 다양한 옵션을 제공합니다. 가장 중요한 것은 아래에 나열되어 있습니다. 트킨터 − Tkinter는 Python과 함께 제공되는 Tk GUI 툴킷에 대한 Python 인터페이스입니다. 이 장에서 이 옵션을 살펴보겠습니다. wx파이썬 − wxWindows용 오픈 소스 Python 인터페이스 http://wxpython.org J파이썬 − JPython은 Python 스크립트가 로컬 시스템 http://www.jython.org의 Ja