https://rednooby.tistory.com/53

# 클래스 생성#
class charic():
    '''레벨을 올려보자'''
    def __init__(self, name, level):
        '''init을 사용해 초기화 해주자'''
        self.name = name
        self.level = level
 
###====여까지 똑같습니다====###
 
    def __str__(self):     #문자열화 해주는 함수 선언!
        '''문자열화 해주는 함수'''
        return "닉네임: {}, 레벨: {}".format(self.name, self.level)
        #해당 값으로 return 해주겠습니다!
# 클래스 생성 끝#
 
create = charic("rednooby", 1) #그대로 값을 집어넣습니다.
print(create) #init에서는 create.name, create.level을 했지만
              #__str__에서 이미 문자열화 해주는 함수를 사용하여
              #return 했기 때문에 create 그대로 사용해도 실행이 됩니다.

내가 정리한 상속, Super, init

class SuperClass(object):
    def __init__(self, x):
        print('testSuper')
        self.x = x

class SubClass(SuperClass):
      def __init__(self, y):
          print('testSub')
          super(SubClass, self).__init__('xxx')
          self.y = y
subclass= SubClass('babo')
print(subclass.x)
print(subclass.y)

+추가

https://velog.io/@gwkoo/클래스-상속-및-super-함수의-역할

class Parent:
    def __init__(self, p1, p2):
    	'''super()를 사용하지 않으면 overriding 됩니다.'''
        self.p1 = p1
        self.p2 = p2
        
class Child(Parent):
    def __init__(self, c1, **kwargs):
        super(Child, self).__init__(**kwargs)
        self.c1 = c1
        self.c2 = "This is Child's c2"
        self.c3 = "This is Child's c3"

child = Child(p1="This is Parent's p1", 
	      p2="This is Parent's p1", 
              c1="This is Child's c1")

print(child.p1)
print(child.p2)
print(child.c1)
print(child.c2)
print(child.c3)
위 코드의 실행 결과는 아래와 같습니다.

This is Parent's p1
This is Parent's p1
This is Child's c1
This is Child's c2
This is Child's c3

31.1. str ('str', 'repr')

https://goodthings4me.tistory.com/59

'__str__'

a.__str__  # == str(a)

'repr'

1. repr로 출력하면, ‘파이썬에서 해당 객체를 만들 수 있는 문자열’로 출력
이를 ‘공식적인’ 문자열이라 한다.

2. str은 소숫점 13자리에서 반올림한다.