상속 inheritance
inheritance python
inheritance python
상속 inheritance
각자 만든 method를 한곳에 사용 하고싶다.
2022-03-26 15:33:03 토요일 팀원들과 vscode live share를 하고 같이 스택에 대해서 같이 코딩을 해보았다 . 그런데 아래와 같은 문제가 발생했다.
- 각자 파일을 만들고 메소드를 만들었다. push pop randompop
- __main__파일로 import 해서 method를 불러왔다.
- __main__이라는 파일에서 Node 객체들 만들고 각자 만들었던 method를 가져와 상속시켰지만
작동하지
않았다
상속이 왜 안될까?
# __main__.py 파일
from smhong import Stack, Node
from sunghye import *
from semyung import *
from ksj import *
class Stack_(Semyung, stack_ksj, Sunghye, Stack):
def __init__(self):
self.max = 10
self.size = 0
self.top = None
def __str__(self):
ss = []
while top:
ss.append(top.item)
top = top.next
return str(ss)
a = Stack_()
a.push(1)
a.pop()
a.push(1)
print(a)
변수가 공유가 안된다
- 각자 만든 메소드를 한 파일에
# __main__.py
# semyung 파일에서 모든 클라스를 가져온다
# ksj 파일에서 모든 클라스를 가져온다
from semyung import *
from ksj import *
# 아래와 같이 두가지 파일을 만들고
# semyung.py
## push method
def push(self, value):
if self.head is not None:
self.head = Node(value)
self.temp = self.head.next
self.head.next = Node(value)
self.head = self.temp
# ksj.py
## pop, randompop method
def pop(self):
if self.top is not None:
node = self.top
self.top = self.top.next
self.size -= 1
return node.item
def randompop(self):
ran = randrange(1, self.size)
node = self.top
for _ in range(ran-1):
if not node:
return None
node = node.next
result = node.next
node.next = node.next.next
return result.item