1) dog라는 클래스 생성방법(클래스 네임은 주로 대문자로 시작)
class Dog:
class Dog():
class Dog(object):
2) 클래스
(1) 네임 스페이스: 객체를 인스턴스 할 때 저장된 공간
(2) 클래스 변수: 직접 접근 가능 = 공유 값
(3)인스턴스 변수: 객체마다 별도로 존재
class Dog: species = 'firstdog'
def __init__(self, name, age): self.name = name self.age = age
a = Dog("mikky", 2) b = Dog("baby", 3)
print('Dog1', a.__dict__) #Dog1 {'name': 'mikky', 'age': 2} print('Dog2', b.__dict__) #Dog2 {'name': 'baby', 'age': 3}
print('{} is {} and {} is {}'.format(a.name, a.age, b.name, b.age))
- 결과: mikky is 2 and baby is 3
print(Dog.species) #firstdog print(a.species) #firstdog print(b.species) #firstdog
3) self의 이해
class selftest: def func1(): #self 없음 print('func1 called') def func2(self): #self 있음 print('func2 called')
f.func1()
이렇게 호출할 수 없음
selftest.func()
클래스로 직접호출만 가능(매개변수 없어서)
f.func2()
인스턴스로 호출 가능
selftest.func(f)
인스턴스 넘겨주고 호출 가능