본문 바로가기
Python/파이썬 300제

파이썬 300제 251~260 (파이썬 클래스)

by Maccrey 2024. 6. 9.
반응형

251. 클래스와 객체에 대해 설명해봅시다.[클래스, 객체, 인스턴스]

-> 클래스는 일종의 설계도로, 하나의 타입을 정의하는 방법입니다.

클래스에는 관련있는 데이터와 함수를 한 데 모아 정의할 수 있습니다.

클래스로 만들어진 결과물을 객체라고합니다.

 

252. 비어있는 사람 (Human) 클래스를 "정의" 해보세요.[클래스 정의]

->

class Human:
    pass

 

253.사람 (Human) 클래스의 인스턴스를 "생성" 하고 이를 areum 변수로 바인딩해보세요.[인스턴스 생성]

->
class Human:
    pass

areum = Human()

254 .사람 (Human) 클래스에 "응애응애"를 출력하는 생성자를 추가하세요.[클래스 생성자-1]

>>> areum = Human()
응애응애

->

class Human:
    def __init__(self):
        print("응애응애")

areum = Human()

 

255. 사람 (Human) 클래스에 (이름, 나이, 성별)을 받는 생성자를 추가하세요.[클래스 생성자-2]

>>> areum = Human("아름", 25, "여자")
 

->

class Human:
    def __init__(self, name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex

areum = Human("아름", 25, "여자")
print(areum.name)
 

256. 255에서 생성한 인스턴스의 이름, 나이, 성별을 출력하세요. 인스턴스 변수에 접근하여 값을 출력하면 됩니다.[인스턴스 속성에 접근]

이름: 조아름, 나이: 25, 성별: 여자

인스턴스 변수에 접근하여 값을 가져오는 예

>>> areum.age
25

->

class Human:
    def __init__(self, name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex

areum = Human("아름", 25, "여자")
print(areum.age)

 

257. 사람 (Human) 클래스에서 이름, 나이, 성별을 출력하는 who() 메소드를 추가하세요.[클래스 메소드-1]

>>> areum.who()
이름: 조아름, 나이: 25, 성별: 여자

->

class Human:
    def __init__(self, name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex

    def who(self):
        print("이름: {} 나이: {} 성별: {}".format(self.name, self.age, self.sex))

areum = Human("아름", 25, "여자")
areum.who()      # Human.who(areum)

 

258. 사람 (Human) 클래스에 (이름, 나이, 성별)을 받는 setInfo 메소드를 추가하세요.[클래스 메소드-2]


>>> areum = Human("모름", 0, "모름")
>>> areum.setInfo("아름", 25, "여자")

->

class Human:
    def __init__(self, name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex

    def who(self):
        print("이름: {} 나이: {} 성별: {}".format(self.name, self.age, self.sex))

    def setInfo(self, name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex


areum = Human("불명", "미상", "모름")
areum.who()      # Human.who(areum)

areum.setInfo("아름", 25, "여자")
areum.who()      # Human.who(areum)

 

259.사람 (human) 클래스에 "나의 죽음을 알리지 말라"를 출력하는 소멸자를 추가하세요.[클래스 소멸자]

>>> areum = Human("아름", 25, "여자")
>>> del areum
나의 죽음을 알리지 말라

->

class Human:
    def __init__(self, name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex

    def __del__(self):
        print("나의 죽음을 알리지마라")

    def who(self):
        print("이름: {} 나이: {} 성별: {}".format(self.name, self.age, self.sex))

    def setInfo(self, name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex

areum = Human("아름", 25, "여자")
del(areum)

소멸자는 객체가 삭제될 때 호출되는 특별한 메서드입니다. 이 메서드는 __del__()로 정의되며, 객체의 메모리를 해제하고 삭제하기 직전에 실행됩니다.

 

260. 아래와 같은 에러가 발생한 원인에 대해 설명하세요.[에러의 원인]


class OMG : 
    def print() :
        print("Oh my god")

>>> >>> myStock = OMG()
>>> myStock.print()
TypeError Traceback (most recent call last)
<ipython-input-233-c85c04535b22> in <module>()
----> myStock.print()

TypeError: print() takes 0 positional arguments but 1 was given

->

class OMG :
    def print() :
        print("Oh my god")


mystock = OMG()
mystock.print()      # OMG.print(mystock)
반응형