Python

[Python] 9. class_extends (클래스 상속)

걍작 2022. 4. 8. 01:27

#정리

#25class_extends - 클래스 상속 

#상속할 때는 클래스(상속 클래스1,상속 클래스2,,,) 형태로 한다.
 - class Student(Person):
#상속 후 부모 클래스의 [클래스 변수]와 [함수] 상속
 - print(st.userName) #클래스변수 상속 OK
 - print(st.pname) #함수 안인스턴스 변수 상속 안됨. self ==has no attribute
 - st.sleep(7)#상속 후 부모 클래스 함수 사용 가능
#상속 관계 확인
 - print(Person.__bases__)#Person의 슈퍼클래스 확인
 - print(Student.__bases__)#Person의 슈퍼클래스 확인
#명령어가 is로 시작하면 참,거짓으로 반한된다.
 - print(issubclass(Person,object))
 - print(issubclass(Student,Person))#Student가 Person의 상속 클래스니?


#26class_multi_extends - 클래스 다중 상속

#다중상속을 할 때는 클래스(상속 클래스1,상속 클래스2,,,) 형태로 한다.

 - class Student(Person,Korean):

 

 

 

#25class_extends - 클래스 상속 

#상속할 때는 클래스(상속 클래스1,상속 클래스2,,,) 형태로 한다.
 - class Student(Person):
#상속 후 부모 클래스의 [클래스 변수]와 [함수] 상속
 - print(st.userName) #클래스변수 상속 OK
 - print(st.pname) #함수 안인스턴스 변수 상속 안됨. self ==has no attribute
 - st.sleep(7)#상속 후 부모 클래스 함수 사용 가능
#상속 관계 확인
 - print(Person.__bases__)#Person의 슈퍼클래스 확인
 - print(Student.__bases__)#Person의 슈퍼클래스 확인
#명령어가 is로 시작하면 참,거짓으로 반한된다.
 - print(issubclass(Person,object))
 - print(issubclass(Student,Person))#Student가 Person의 상속 클래스니?

 

--예문 코드 보기--

더보기
#!/usr/bin/env python
# -*- coding: utf-8 -*-

print("----Person------")
#클래스 상속
class Person:
	userName = "lee"
	
	def __init__(self):
		print("Person __init__")
		self.pname = "kim"
		
	def sleep(self,time):
		print("sleep()...",time)
	
p = Person()

print(p.pname)
p.sleep(5)


print("----Student------")
#상속할 때는 클래스(상속 클래스1,상속 클래스2,,,) 형태로 한다.

class Student(Person):
	def __init__(self):
		print("Student __init__")
		
st = Student()

#상속 후 부모 클래스의 기본 변수 상속
print(vars(st))
print(st.userName) #클래스변수 상속 OK
#print(st.pname) #함수 안 인스턴스 변수 상속 안됨. self ==has no attribute
st.sleep(7)#상속 후 부모 클래스 함수 사용 가능
print("---------------")

#상속 관계 확인
print(Person.__bases__)#Person의 슈퍼클래스 확인
print(Student.__bases__)#Person의 슈퍼클래스 확인

#명령어가 is로 시작하면 참,거짓으로 반한된다.
print(issubclass(Person,object))
print(issubclass(Student,Person))#Student가 Person의 상속 클래스니?

 

 

 


#26class_multi_extends - 클래스 다중 상속

#다중상속을 할 때는 클래스(상속 클래스1,상속 클래스2,,,) 형태로 한다.

 - class Student(Person,Korean):

#person / korean 상속
class Student(Person,Korean):
def __init__(self):
print("Student __init__")

st = Student()

print(st.userName) #person class 상속
print(st.ssn)  #Korean class 상속

 

--예문 코드 보기--

더보기
#!/usr/bin/env python
# -*- coding: utf-8 -*-

print("---------------")
#다중 상속.
class Korean:
	ssn = "880708-1912345"
	def __init__(self):
		print("Korean__init__")
		
	def getLocation(self):
		print("Korean getLocation()...")
		return "GyngGiDo"
	
	
class Person:
	userName = "lee"
	
	def __init__(self):
		print("Person __init__")
		self.pname = "kim"
		
	def sleep(self,time):
		print("sleep()...",time)
	
p = Person()

print(p.pname)
p.sleep(5)


print("---------------")
#상속할 때는 클래스(상속 클래스1,상속 클래스2,,,) 형태로 한다.

class Student(Person,Korean):
	def __init__(self):
		print("Student __init__")
		
st = Student()

print(vars(st))
print(st.userName)

print(st.ssn)
print(st.getLocation())

st.sleep(7)
print("---------------")