일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- cocre
- 프로그래머스
- Multi-Resolution Networks for Semantic Segmentation in Whole Slide Images
- 히비스서커스
- 코크리
- WSSS
- 도커
- docker attach
- aiffel exploration
- docker
- AIFFEL
- 기초확률론
- airflow
- docker exec
- ssh
- CellPin
- Pull Request
- 티스토리챌린지
- 오블완
- 사회조사분석사2급
- Decision Boundary
- vscode
- numpy
- GIT
- cs231n
- IVI
- 백신후원
- logistic regression
- Jupyter notebook
- HookNet
Archives
- Today
- Total
히비스서커스의 블로그
[Python] TypeError: object.__init__() takes no parameters, TypeError: 'method' object is not subscriptable. 본문
Programming/Python
[Python] TypeError: object.__init__() takes no parameters, TypeError: 'method' object is not subscriptable.
HibisCircus 2022. 1. 7. 16:04728x90
상황
메서드 오버라이딩 중 다음과 같은 에러가 발생하였다.
대략적인 코드
class Test:
def __init__(self, base):
self.base = base
def add(self):
self.base_100 = self.base + 100
self.base_200 = self.base + 200
return self.base_100, self.base_200
def mul(self):
raise NotImplementedError
class Test1(Test):
def __init__(self, base):
super(Test, self).__init__(
base = base
)
def mul(self):
self.base_mul = self.add[0] * self.add[1]
return self.base_mul
a = 5
test1 = Test1(a)
test1.mul()
에러메시지
TypeError: object.__init__() takes no parameters.
원인
Test1의 __init__ 의 super안에 파생클래스가 아닌 기반 클래스를 넣었기 때문.
해결방법
Test1의 __init__ 의 super안에 기반 클래스(Test)가 아닌 파생클래스(Test1)와 self를 넣어 현재 클래스가 어떤 클래스인지 명확하게 표시해줄 것
수정된 코드
class Test:
def __init__(self, base):
self.base = base
def add(self):
self.base_100 = self.base + 100
self.base_200 = self.base + 200
return self.base_100, self.base_200
def mul(self):
raise NotImplementedError
class Test1(Test):
def __init__(self, base):
# Test -> Test1
super(Test1, self).__init__(
base = base
)
def mul(self):
self.base_mul = self.add[0] * self.add[1]
return self.base_mul
a = 5
test1 = Test1(a)
test1.mul()
또 다른 메시지 발생
TypeError: 'method' object is not subscriptable.
원인
파생 클래스 Test1의 mul 메서드 안에서 기반 클래스 Test의 add 메서드를 호출할 때 self.add()와 같이 괄호를 붙여주지 않았기 때문이다.
해결방법
파생 클래스 Test1의 mul 메서드 안에서 기반 클래스 Test의 add 메서드를 호출할 때 self.add()와 같이 괄호를 붙여주면 해결된다.
수정된 코드
class Test:
def __init__(self, base):
self.base = base
def add(self):
self.base_100 = self.base + 100
self.base_200 = self.base + 200
return self.base_100, self.base_200
def mul(self):
raise NotImplementedError
class Test1(Test):
def __init__(self, base):
super(Test1, self).__init__(
base = base
)
def mul(self):
self.base_mul = self.add()[0] * self.add()[1]
return self.base_mul
a = 5
test1 = Test1(a)
test1.mul()
# 21525
잘 해결되었다.
-히비스서커스-
728x90