class FourCal: # define class
def __init__(self, input1, input2):
self.input1 = input1
self.input2 = input2
def setdata(self, input1, input2): # method for parameter
self.input1 = input1
self.input2 = input2
def getdata(self):
input1 = self.input1
input2 = self.input2
return input1, input2
def add(self): # method for addition
result = self.input1 + self.input2
return result
obj1 = FourCal(0,0)
obj1.setdata(4, 5)
print(obj1.input1) # object(obj1) parameter:input1
print(obj1.input2) # object(obj1) parameter:input2
print("---------------------")
a,b = obj1.getdata()
print(a)
print(b)
print("---------------------")
print(obj1.add())
print("---------------------")
obj2 = FourCal(4,5)
print(obj2.add())
print("----------------------")
class NewFourCal(FourCal):
pass #밑에서 add때림. newfourcal은 fourcal안에 있는 걸 대부분 복붙해둔거라고 생각하면 편함.
obj2 = NewFourCal(4, 2)
obj2.add()
class NewFourCal(FourCal):
# 카피만 하는 것이 아니라 추가도 가능하다. 대신 mul이 fourcal안에 들어가진 않음.
def mul(self):
result = self.input1 * self.input2
return result
obj2 = NewFourCal(4, 5)
obj2.mul()
print("----------------------")
class NewFourCal1(NewFourCal):
pass
obj3 = NewFourCal1(4,5)
print(obj3.mul())
#output
4
5
-----------
4
5
-----------
9
-----------
9
-----------
-----------
20
메소드에 set붙여서 setdata를 쓰는 게 더 효율적임.
데이터 뽑을 땐 get을 붙여서 getdata.
class Car:
maker='Ford' #class parameter
print(Car.maker) #ford 튀어나옴
Car.maker = 'Benz' #string
obj1=Car() # object1
obj2=Car() # object2 #class instance 2piece
print(Car.maker)
print(obj1.maker)
print(obj2.maker)
print(id(Car.maker)) #id는 공유가 됨. class안의 attribute는 공유하기 때문
print(id(obj1.maker))
print(id(obj2.maker))
print(id(Car)) #얘네는 다 다름.
print(id(obj1))
print(id(obj2))
obj1.maker='Sonata' # modify object properties
print(obj1.maker) #sonata
del obj1.maker # delete object properties #sonata delete
print(obj1.maker) #benz
del obj2 # delete objects
#print(obj2.maker) #외부에 선언된 것이 없어 오류가 발생. delete됏엉 ㅜㅎ
#output
Ford
Benz
Benz
#output
Benz
4300541104
4300541104
4300541104
4839255808
4300576368
4300576320
Sonata
Benz
클래스 상속
#파이썬 상속
class Animal: # create a parent class
def __init__(self, kind, hometown):
self.kind = kind
self.hometown = hometown
obj1 = Animal("dog.", "Yeongju.") # create an object(obj1)
print("I like ", obj1.kind, "My hometown is", obj1.hometown)
print("---------------------------")
class Animal: # create a parent class
def __init__(self, kind, hometown):
self.kind = kind
self.hometown = hometown
def funcName(self):
print("I like "+self.kind,"My hometown is "+self.hometown)
obj2 = Animal("dog.", "Yeongju.") # create an object(obj2)
obj2.funcName() # execute the funcName method
print("---------------------------")
class Animal: # 두개의 출력 메소드 가짐. 부모클래스
def __init__(self, kind, hometown): #
self.kind = kind #
self.hometown = hometown #
def funcName(self):
print("I like "+self.kind,"My hometown is "+self.hometown) #
class Domesticani(Animal): # create a child class #차일드 클래스
pass #패스만 때려도 부모 클래스의 내용을 복사받음.
# create an object using the Domesticani class
obj3 = Domesticani("dog.", "Yeongju.")
obj3.funcName() # execute the funcName method
# 출력하면 부모 클래스와 동일하게 출력됨.
print("--------------------------------")
class Domesticani(Animal): # create a child class
def __init__(self, kind, hometown, year): #이렇게 세개로 바꿔주면
super().__init__(kind, hometown) # inherit from parent
self.birthyear = year
def funcInf(self): # add method
print("I like", self.kind,"My hometown is", self.hometown,
"Birth year is", self.birthyear) #상속받아 세개로 출력 가능함
obj4 = Domesticani("dog.", "Yeongju.", "2017.")
obj4.funcInf()
# 이렇게 클래스를 여러개 만들어야 할 때 복붙하지 않고 메소들을 상속받아 출력하면 더 효율적임.
#obj4. 쳐보면 쓸 수 잇는 메소드들 다 뜸 ㅇㅇㅋ
#output
I like dog. My hometown is Yeongju.
---------------------------
I like dog. My hometown is Yeongju.
---------------------------
I like dog. My hometown is Yeongju.
--------------------------------
I like dog. My hometown is Yeongju. Birth year is 2017.
class Car:
def drive(self):
self.speed = 60
myCar = Car()
myCar.speed = 0
myCar.model = "E-Class"
myCar.color = "blue"
myCar.year = "2017"
#기존에 없던 것들을 만들 수도 있음. speed model color year등등
print("자동차 객체를 생성하였습니다.")
print("자동차의 속도는", myCar.speed)
print("자동차의 색상은", myCar.color)
print("자동차의 모델은", myCar.model)
print("자동차를 주행합니다.")
myCar.drive()
print("자동차의 속도는", myCar.speed)
print("--------------------------------")
class Car:
def __init__(self, speed, color, model):
self.speed = speed
self.color = color
self.model = model
def drive(self):
self.speed = 60
myCar = Car(0, "blue", "E-class")
print("자동차 객체를 생성하였습니다.")
print("자동차의 속도는", myCar.speed)
print("자동차의 색상은", myCar.color)
print("자동차의 모델은", myCar.model)
print("자동차를 주행합니다.")
myCar.drive()
print("자동차의 속도는", myCar.speed)
#output
자동차 객체를 생성하였습니다.
자동차의 속도는 0
자동차의 색상은 blue
자동차의 모델은 E-Class
자동차를 주행합니다.
자동차의 속도는 60
--------------------------------
자동차 객체를 생성하였습니다.
자동차의 속도는 0
자동차의 색상은 blue
자동차의 모델은 E-class
자동차를 주행합니다.
자동차의 속도는 60
중간ㄱ고사
사칙연산은 문제로 안나와
그만두고싶다. everythong.
과제에 파일 올라가는 경우 있으니 잘 확인.
이슈 생기면 바로 교수님께 메일 ㄷㄱㄱㄷㄱㄷㄱㄷㄱㄱㄱㄱㄱㄱㄱㄱㄱㄱㄱㄱㄱㄱㄱㄱㄱㄱㄱㄱㄱㄱㄱㄱㄱㄱㄹ
'Pworkspace' 카테고리의 다른 글
week11 - numpy(2)(histogram+ 너구리) (0) | 2024.05.14 |
---|---|
week9 - matplotlib(시험범위 귀띔) (0) | 2024.04.30 |
week3 - split, map , sep, end (0) | 2024.04.05 |
week3 - format (0) | 2024.04.05 |
week2 - 예외 처리 (0) | 2024.04.03 |