클래스_Dog예제 & Self예제 관련
403
작성한 질문수 3
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')
답변 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
20
1
3-1 sub 폴더를 찾을 수 없습니다
0
31
1
강의자료 누락
0
36
1
Python: Select Interpreter 오류
0
57
1
54강 4분 41초에서 질문 있어요.
0
59
1
import
0
37
1
45강 예제4번에서 질문 있어요!
0
60
1
45강 강의 10분 03초 내용에서 x + 1 을 하는 이유는 뭔가요?
0
51
1
3강, 7강 화면이 안나옵니다. 그냥 검은화면으로만 노출되요;;
0
56
1
41강 1분 39초 영상에서 import test_module이 조회 안 돼요.
0
58
1
29강 while(3-1) 5분 20초 강의 영상 질문
0
52
0
pcskjs@naver.com
0
60
1
인터프리터 설정이 안됩니다.
1
83
1
Python formatter 설치
0
48
1
자료 다운로드 위치 확인 부탁드립니다.
0
54
2
보라색 예약어
0
51
1
#을 붙이는 이유
0
52
1
실행이 안 되는데요.
0
69
1
print 문법 실행 안 돼요.
0
59
1
영문 계정
0
51
1
맥북에서 아이패드로 연결해서 보려고 하면 화면이 안뜹니다.
0
44
1
인스턴스 변수 문의
0
84
1
챕터 03_04 (튜플) 교육자료
0
91
2
Package(3-1) Sub 폴더 자료
0
76
1





