[파이썬 거북이반] #3 class

2022. 9. 20. 20:54스파르타코딩클럽[AI트랙 3기]/파이썬 거북이반

 

*1교시

1.세상을 인식하는 방법으로 이해하기

사람들이랑, 커피라는 객체들이 있고 사람은 여러 행동을 할 수 있다.

 

2.프로그래밍은 객체지향, 절차지향이 있음.

우리가 가위바위보만든 것은 절차지향임.(위에서부터 순차적으로)

객체를 실재하지 않는 것이다. 코드로 나타낼 때 어떻게 해야할지 원칙들을 잘 보자

 

3.클래스 만들기,클래스에는 속성과 메소드 두가지가 있다(암기)

class Person:

name = “lee”

gender = “female”

age = 20

 

person1 = Person()

 

print(person1.name)  #인스턴스의 속성값을 입력

 

인스턴스가 person1 실체화가 된 것(class는 틀)

이제 인스턴스를 추가하면

person2 = Person()

person2.name=“kwon”

person2.gender=“male”

person2.name=“20”

print(person2.name) #하면 내용이 바뀜

+)처음만들 때 무조건 실행되는 메소드 : init

class Person:

name = “lee”

gender = “female”

age = 20

 

def__init__(self):

print(“이닛 메소드 안입니다.”)

 

person1 = Person()

person2.name=“kwon”

person2.gender=“male”

print(person2.name)

하면 이닛메소드안입니다. 두 번 나옴.

------------------------------------------------------------

def__init__(self, name):

print(“이닛 메소드 안입니다.”)

 

name이라는 인자를 받아야하는데, 그럼 밑에

person1 = Person(“무언가1”)

person2 = Person(“무언가2”)

해줘야 정상 출력됨. self는 생략 가능하지만 뒤에 name이라는 인자를 필요로하기때문에 Person이라는 class의 괄호안에 인자를 넣어줘야함.

 

def__init__(self,anything):

print(“내용”)

self.name = anything #name뒤에 인자는 anything으로 같아야하고 밑에 self.namename은 밑에 print에서 불러주는 것과  같아야함.

 

person1 = Person(“무언가1”)

person2 = Person(“무언가2”)

 

print(person1.name)

print(person2.name)

속성을 부를 때는 괄호 필요없고, 메소드를 부를때는 괄호 넣기 > person.name / preson.walk() 

class Person():

species = “homo”

 

def walk(self):

print(“walking”)

print(person1.speiece)

person1.walk()  #여기서 walk라는 함수 자체에 print가있어서 굳이 안써줘도 출력됨.

 

*2교시

-메소드에는 무조건 인자가있어야함. self 가 컨벤션임.

class Person:

def talk(self):

print(“안녕하세요 저는” + self.name + “입니다.”)

 

def __init__(self,name , age , hobby ):

self.name = name

self.gae = age

self.hobby = hobby

 

x=Person(“k” , “20” , “피아노”)

x.talk() #talk 는 함수가 발동됨

인스턴스에서 입력하는 순서대로 출력됨.

def __init__(self, name, hobby, age):

self.name = name

self.gae = age

self.hobby = hobby

 

x=Person(“k”,“20”,“피아노”)

x.talk(hobby) > 20이 나옴.

-init은 처음 인스턴스만들 때 자동으로 돌아감.그래서 인잇안에 어떤 값을 프린트하라고 하면 인스턴스 개수만큼 그 내용이 프린트 되어 나옴.

 

실습)도전과제 : 속성을 함수로 바꿔주고 밑에 조건이 있다. 

 

>문제

class Circle:
    pi = 3.14

    def __init__(self, radius):
        self.radius = radius
        self.area = radius * radius * self.pi

    def getCircumference(self):
        return self.radius * self.pi * 2


c = Circle(5)

print("반지름은 : ", c.radius)
print("넓이는 : ", c.area)
print("둘레는 : ", c.getCircumference())


# getArea라는 메소드를 클래스 안에서 만들고, 6번줄은 지워주세요
# 6번줄의 기능을 getArea라는 메소드에서 할수있게끔 로직을 만들어주시고
# 15번줄도 수정해서 getArea라는 메소

>내가 짠 코드

class Circle:
    pi = 3.14

    def __init__(self, radius):
        self.radius = radius
        
    def getArea(self):
        return self.radius ** 2 *self.pi

    def getCircumference(self):
        return self.radius * self.pi * 2


c = Circle(5)

print("반지름은 : ", c.radius)
print("넓이는 : ", c.area)
print("둘레는 : ", c.getCircumference())