본문 바로가기

Python

Python set, 객체 개념 정리

반응형
# 집합(Set) 자료형 (순서X, 중복X)
# 집합(Set) 자료형 (순서X, 중복X)


# 선언
a = set()
b = set([1, 2, 3, 4])
c = set([1, 4, 5, 5])
d = set([1, 2, 'pen', 'seoul', 'air'])


print('a : ', type(a), a)
print('b : ', type(b), b)
print('c : ', type(c), c)
print('d : ', type(d), d)

# 튜플 변환
t = tuple(b)
print('t : ', type(t), t)
print('t : ', t[0], t[1:3])

#리스트 변환

l = list(c)
print('l : ', type(l), l)
print('l : ', l[0], l[1:3])

# 집합 자료형 활용
s1 = set([1,2,3,4,5,6])
s2 = set([4,5,6,7,8,9])

print('s1 & s2 : ', s1 & s2)
print('s1.intersection(s2):', s1.intersection(s2) )

print('s1 | s2 : ' ,s1 | s2);
print('s1.union(s2) : ' ,s1.union(s2))

print('s1 - s2 : ', s1 - s2)
print('s1.difference(s2) : ', s1.difference(s2))

# 추가 & 제거
s1 = set([1,2,3,4])
s1.add(5)
print('s1 : ', s1)

s1.remove(2)
print('s1: ', s1)

1. 클래스 

파이썬도 자바와 비슷하네? 생성자를 만들어줘야 한다. 

 

1. 클래스 정의
    1) 클래스 변수
        - 직접 사용 가능, 객체보다 먼저 생성 
    2) 인스턴스 변수
        - 객체마다 별도로 존재, 인스턴스 생성 후 사용
        - 예) self.speed : 현재 인스턴스의 speed 변수 
              speed : 함수의 파라미터로 넘어 온 speed 변수
        - 해당 인스턴스가 가지는 값과 함수의 인자 값을 구분함    
    3) self
        - 인스턴스(instance) 자기 자신을 의미함
        - init 메서드  

 

class Car:
    #객체를 초기화하는 특별한 메소드
    #속도, 색상을 받아서 객체 안의 변수에 저장함
    def __init__(self, speed, color):
        self.speed = speed
        self.color = color
myCar = Car(0,"white")
print(myCar.speed)
print(myCar.color)

새로 생성된 Car의 객체는 myCar다. 

class Car:
    #객체를 초기화하는 특별한 메소드
    #속도, 색상을 받아서 객체 안의 변수에 저장함
    def __init__(self, speed, color):
        self.speed = speed
        self.color = color
    def drive(self):            #메소드의 첫번째 인자는 항상 self
        self.speed=60
        print("주행중입니다.")

    def stop(self):
        self.speed=0
        print("정지했습니다")

myCar = Car(0,"white")
print(myCar.speed)
print(myCar.color)

myCar.drive()
print(myCar.speed)

myCar.stop()
print(myCar.speed)

yourCar = Car(60, "green")
earthCar = Car(70, "silver")
moonCar = Car(30, "red")

 

2. 거북이 객체 생성 

import turtle
from turtle import *    #tutle 모듈에서 모든것을 불러옴
t =  Turtle()      #객체생성

t.forward(100)
t.left(90)
t.forward(200)

turtle.exitonclick()

 

3. 인간 객체 생성

class Human:
    def __init__(self):
        self.age = 0

    def old(self):
        self.age += 1

# 사람 인스턴스 생성
human1 = Human()
human2 = Human()

for i in range(10):     #10세
    human1.old()

for i in range(20):     #20세
    human2.old()

# 각 사람의 나이 출력
print(human1.age)
print(human2.age)

 

4. 학생 객체 생성 

class Student:
    def __init__(self, id, name, age, gender, department):
        self.id = id
        self.name = name
        self.age = age
        self.gender = gender
        self.department = department

    def show(self):
        print("===학생 정보===")
        print(f"학번 : {self.id}")
        print(f"이름 : {self.name}")
        print(f"나이 : {self.age}")
        print(f"성별 : {self.gender}")
        print(f"학과 : {self.department}")

    def add_age(self, offset):
         self.age += offset

student1 = Student("20230001", "이순신", 20, "남성", "컴공")
student2 = Student("20210002", "신사임당", 30, "여성", "산디")
student3 = Student("20210003", "참무식", 40, "중성", "영교")

student1.show()
student2.show()
student3.show()

student1.add_age(1)
print(student1.age)

 

5. 고객 객체 생성

class Client:
    client_cnt = 0

    def __init__(self, id, name, age, gender, point):
        self.id = id
        self.name = name
        self.age = age
        self.gender = gender
        self.point = point
        Client.client_cnt += 1

    def show(self):
        print("===고객 정보===")
        print(f"고객 번호 : {self.id}")
        print(f"이름 : {self.name}")
        print(f"나이 : {self.age}")
        print(f"성별 : {self.gender}")
        print(f"고객 점수 : {self.point}")
        print(f"현재 총 고객 수 : {Client.client_cnt}")

    def __del__(self):
       Client.client_cnt -= 1

client1 = Client(1,"순신", 20, "남성", 20000)
client2 = Client(2,"무식", 40, "남성", 560000)
client3 = Client(3,"상성", 30, "여성", 510400)

client1.show()
client2.show()
client3.show()

print(f"현재 총 고객 수 : {Client.client_cnt}")

 

반응형