inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)

Class(1-2)

클래스_Dog예제 & Self예제 관련

388

MUYAHO

작성한 질문수 3

1

Dog예제에서 a.species는 작동을 하는데,

유사하게 클래스 속성으로서의 함수 f.func1()은 왜 작동안하는지 조금 혼란이 옵니다ㅠㅠ

혹시 강사님께서 해당 예제에서 설명하고자 하셨던 목적이 어떤 것인지 다시 한번 풀어서 이야기해주실 수 있는지 여쭙고 싶습니다ㅠㅠ

 

<Dog 예제>

class dog(object):
    species = 'firstdog'
    def __init__(self, name, age):
        self.name = name
        self.age = age

 <Self 예제>

class SelfTest():
    def func1():
        print('func1 called')
    def func2(self):
        print(id(self))
        print('func2 called')

 

python

답변 1

3

조은상

안녕하세요, 저도 정말 초보이지만, 혹시나 해서 답변 달아봅니다.

질문해주신 Dog 클래스에서, a.species는 작동을 하셨다는 것으로 유추해보면,

Dog 클래스의 인스턴스명이 a 라고 생각되는데요.

class Dog :
    species = 'firstdog'
    def __init__(self, name, age):
        self.name = name
        self.age = age

위 코드에서, species는 클래스의 변수(attribute)여서 클래스에 해당되는 모든 인스턴스에 적용됩니다.

즉, Dog 클래스의 공통적인 특징을 변수 자리에 적어주시면 될 것 같습니다.

따라서 a.species를 하면, 'firstdog'이 출력될 것 같구요.

class SelfTest():
    def func1():
        print('func1 called')
    def func2(self):
        print('func2 called')

위 코드에서 func1과 2의 차이는 (self) 의 여부, 즉 인스턴스를 받을 수 있냐 없냐의 차이입니다.

self는 인스턴스(Dog 클래스 경우에서 a)를 의미하는데, func1()의 경우 self가 없으므로,

b = SelfTest()

라고 인스턴스를 b라고 이름지었을 때, b가 SelfTest 클래스에서 self에 해당되므로,

인스턴스(self)가 들어갈 수 있는 func2가 실행되어 'func2 called'가 출력될 것입니다.

func1을 실행하시려면

SelfTest.func1()

라고 코딩하시면, 클래스의 함수로서 직접 실행될 것이고, func2를 실행하시려면

SelfTest.func2(b) 또는 b.func2()

라고 호출하시면 될 것 같습니다. 답변이 두서없었네요. 핵심은 self = 인스턴스다 !! 입니다.

1

좋은사람

오 은상님이 굉장히 자세하게 써주셨어요.

self인자 존재 유무에 따라 클래스 및 인스턴스 호출에 따른 실행 부분이 달라지기 때문이예요.

위에 은상님이 자세히 설명해 주셨어요!

인스턴스 변수 문의

0

37

1

챕터 03_04 (튜플) 교육자료

0

35

2

Package(3-1) Sub 폴더 자료

0

36

1

아톰 출력 안됨

0

66

2

강의자료 메일 발송 요청 드립니다.

0

77

1

강의자료 메일로 보내주실 수 있으실까요?

1

53

0

Iterable 요소는 리스트로 작성해야하는 것 맞나요?

1

77

2

강의자료 부탁드립니다

0

63

2

if Flase: print('Bad')

0

60

1

=와 == 의 차이

0

78

1

functions 함수 섭들을려고하는데요

0

67

1

강의자료 부타드리겠습니다!

0

58

0

VSCODE에 VIEW에서 SELECTED INTERPRETER조회가 안됩니다.

0

65

1

강의자료 부탁드립니다.

0

52

0

dict의 Key를 바꾸는 방법

0

67

1

강의자료부탁드립니다

0

61

1

run withount 디버깅 및 F5+ctrl이 안먹혀요

0

61

1

강의 자료와 예정 다운로드

0

76

2

객체지향 vs 함수형

0

63

1

어렵네요 설정도

0

85

1

설정이 잘 된건지

0

51

1

맥 os vscode 설정 - python interpreter select

0

104

1

강의자료 부탁드립니다. mytoughgirl@naver.com 입니다.

0

46

1

vscode로 수업 진행한 영상은 없는건가요?

0

57

2