AboutPython

[파이썬] 객체 속성 변경

scone 2022. 5. 3. 14:39

다음의 예제를 통해 알아보자.

1. 컴퓨터에 대한 클래스를 만들고

2. 내 컴퓨터와 친구 컴퓨터에 대한 객체를 만든다.

3. 친구 컴퓨터를 보고 셈이 난 나머지 내 컴퓨터를 업그레이드를 한다.

4. 속성이 제대로 변경되었는지 확인한다.

 

class NewGenerationPc :
    def __init__(self,name,cpu,memory,ssd):
        self.name = name
        self.cpu = cpu
        self.memory = memory
        self.ssd = ssd
    def doExcel(self):
        print('Excel Run!')
    def doPhotoShop(self):
        print('PhotoShop Run!')
    def printPcInfo(self):
        print(f'{self.name}의 성능')
        print(f'self.cpu : {self.cpu}')
        print(f'self.memory : {self.memory}')
        print(f'self.ssd : {self.ssd}')

myPc = NewGenerationPc('jupiter','i5','8g','259g')
myPc.printPcInfo()
print()

friendPc = NewGenerationPc('Henna','i7','16g','512g')
friendPc.printPcInfo()
print()

#내 피씨 업그레이드 하자
myPc.memory = '16g'
myPc.cpu = 'i9'
myPc.ssd = '1T'
myPc.printPcInfo()
'''
jupiter의 성능
self.cpu : i5
self.memory : 8g
self.ssd : 259g

Henna의 성능
self.cpu : i7
self.memory : 16g
self.ssd : 512g

jupiter의 성능
self.cpu : i9
self.memory : 16g
self.ssd : 1T
'''

 


[실습1] 계산기 클래스, argue 받지 말고 속성 변경 통해 접근해보기 

class Calculator :
    def __init__(self):
        self.number1 = 0
        self.number2 = 0
        self.result = 0
    def add(self):
        self.result = self.number1 + self.number2
        return self.result
cal = Calculator()
cal.number1 = int(input('넘버원 : '))
cal.number2 = int(input('넘버투 : '))
print(f'cal.add():{cal.add()}')
'''
넘버원 : 10
넘버투 : 20
Calculator.add():30
'''

처음에

cal 이라는 변수에 Calculator()을 할당하지 않고

Calculator().number1 과 Calculator().number2 에 값을 할당해준 후 Calculator.result 를 프린트 했더니 0이 나왔다.

왜냐면 Calculator() 은 매번 새로운 생성자를 불러오기 때문에, 쓸때마다 매번 속성 값을 초기화한 새로운 객체를 만들어내기 때문이다.