class person:
     = 2
     = 1
     = 1
    배부름 =0
    def exercise():
        print("운동중")
    def 밥먹기(밥먹는량):
            person.배부름 = person.배부름 + 밥먹는량
            print ("소화중")
class jack(person):
    def 공부하기():
        print ("공부중")
class tom(person):
    def 게임하기():
        print("게임중")
jack.밥먹기(3)
tom.밥먹기(3)
print (jack.배부름

이개 내가 처음에 짲던 코드임

여기서 jack.밥먹기를 하면 jack.배부름이 오르는게 아니라 person.배부름이 오름

이걸 일단 방지하기 위해서 

class person:
     = 2
     = 1
     = 1
    배부름 =0
    def exercise():
        print("운동중")
    def 밥먹기(밥먹는량):
            person.배부름 = person.배부름 + 밥먹는량
            print ("소화중")
jack = person()
tom = person()

이런 식의 코드를 만들어서 3개의 객체를 만든다음 각각을 독립되게 만듬

class person:
     = 2
     = 1
     = 1
    배부름 =0
    def exercise():
        print("운동중")
    def 밥먹기(밥먹는량):
            person.배부름 = person.배부름 + 밥먹는량
            print ("소화중")
jack = person()
tom = person()
jack.밥먹기(3)
print(jack.배부름)

그다음에 이런 코드를 짜면

    jack.밥먹기(3)

TypeError: 밥먹기() takes 1 positional argument but 2 were given

이런 오류가 뜨는데 이게 인자를 하나 받는대 두개의 인자를 준다는 것임 이걸 해결하기 위해서 구글링을 함

구글링 하는중에 self 를 첫번째 인자에 사용하면 된다길레

class person:
     = 2
     = 1
     = 1
    배부름 =0
    def exercise():
        print("운동중")
    def 밥먹기(self,밥먹는량):
            person.배부름 = person.배부름 + 밥먹는량
            print ("소화중")
jack = person()
tom = person()
jack.밥먹기(3)
print(jack.배부름) 

이렇게 짬 근데 이렇게 짜도 각각이 독립이 안됌

그래서 마지막으로

class person:
     = 2
     = 1
     = 1
    배부름 =0
    def exercise():
        print("운동중")
    def 밥먹기(self,밥먹는량):
            self.배부름 = self.배부름 + 밥먹는량
            print ("소화중")
jack = person()
tom = person()
jack.밥먹기(3)
print(jack.배부름)

이렇게 짜면 가상의 self 변수의 값을 넣는다(이거 아닐수도 있음)

이렇게 하니까 'jack.밥먹기' 를 해도 tom.배부름에 영향 안끼치더라