안녕하세요. 우당탕탕 개발 일지입니다.
파이썬 에디터 IDLE 3.12.1을 사용합니다.
책과 수업 내용을 바탕으로 요약한 내용과 교재 뒤 연습문제입니다.
- 객체와 클래스
- 생성자와 상속
1.객체와 클래스
1-1 객체(object)
=대상물.
=하나의 물건
=data+code.
=속성(attribute)과 동작(action).
=속성(attribute)+메서드(method)
=함수와 변수를 하나의 단위로 묶을 수 있는 방법.
( ※객체가 처음에는 잘 이해가 안 될 수도 있습니다. )
1-2 클래스(class)
클래스(Class)→객체 생성(object)
:클래스 =객체를 찍어내는 틀
- 멤버 변수 =객체의 속성을 나타내는 변수
- 멤버 함수 or 메소드 =객체의 동작, 행동
💡 함수(function)와 메소드(method)는 다르다. 메소드는 매개변수가 있어야 한다.
1-3
클래스에서 메서드의 첫 번째 매개변수는 반드시 self로 지정해야 한다.
class Car:
def drive(self):
self.speed = 10
myCar = Car()
myCar.color = "blue"
myCar.model = "E-Class"
myCar.drive() # 객체 안의 drive() 메소드가 호출된다.
print(myCar.speed)
2. 생성자
- __init__ : 객체의 속성을 초기화시킨다. (우리가 호출하지 않으면 객체가 생성될 때 자동으로 호출된다.)
- __str__ : 객체 자체를 출력할 때 형식을 정해주는 메소드이다.
class Car:
def __init__(self, speed, color, model):
self.speed = speed
self.color = color
self.model = model
def drive(self):
self.speed = 60
dadCar = Car(0, "silver", "A6")
momCar = Car(0, "white", "520d")
myCar = Car(0, "blue", "E-class")
상속
- 클래스를 정의할 때 부모 클래스를 지정하는 것이다.
- 자식 클래스는 부모 클래스의 내용을 물려받아서, 부모 클래스의 메소드와 변수들을 사용할 수 있다.
연습문제 ch13-2
class TV:
def __init__(self):
self.channel=1
self.volume=5
self.on=False
def __str__(self):
temp="on:"+str(self.on)+"\n"+ "channel:"+str(self.channel)+"\n" +"volume:"+str(self.volume)
return temp
def Turnon(self):
self.on=True
print("tv가 켜졌습니다. ")
def Turnoff(self):
self.on=False
print("tv가 꺼졌습니다.")
def setchannel(self,ch):
if self.on==True:
self.channel=ch
def setvolume(self,vol):
if self.on==True:
self.volume=vol
mytv=TV()
mytv.Turnoff()
mytv.setchannel(11)
mytv.setvolume(6)
print(mytv,"\n")
mytv.Turnon()
mytv.setchannel(11)
mytv.setvolume(6)
print(mytv)
연습문제 ch13-4
import tkinter as tk
import random
import time
class Ball:
def __init__(self,c,s,x,y):
self.xs=random.randint(1,10)
self.ys=random.randint(1,10)
self.x=x
self.y=y
self.color=c
self.size=s
self.ball=canvas.create_oval(
self.x-self.size/2,
self.y-self.size/2,
self.x+self.size/2,
self.y+self.size/2,fill=self.color)
def move(self):
self.x += self.xs
self.y += self.ys
if self.x-self.size/2 <0 or self.x +self.size/2>500:
self.xs *= -1
elif self.y-self.size/2 <0 or self.y +self.size/2>300:
self.ys *= -1
canvas.delete(self.ball)
self.ball=canvas.create_oval(
self.x - self.size/2,
self.y - self.size/2,
self.x + self.size/2,
self.y + self.size/2, fill=self.color)
w=tk.Tk()
w.geometry("500x300")
f=tk.Frame(w)
canvas=tk.Canvas(f)
f.pack(expand=True)
canvas.pack(expand=True)
balls=[]
for i in range(10):
r=random.randint(0,255)
g=random.randint(0,255)
b=random.randint(0,255)
color=f"#{r:02x}{g:02x}{b:02x}"
aball=Ball(color,random.randint(20,100),
random.randint(1,500),
random.randint(1,300))
balls.append(aball)
while True:
for aball in balls:
aball.move()
canvas.update()
time.sleep(0.01)
w.mainloop()
728x90
'[프로그래밍 언어] > python' 카테고리의 다른 글
따라하며 배우는 파이썬과 데이터 과학(개정판)_ch2 문제풀이 (0) | 2024.03.13 |
---|---|
따라하며 배우는 파이썬과 데이터 과학(개정판)_ch1 문제풀이 (0) | 2024.03.13 |
두근두근 파이썬(개정판)_ch11 파일 (1) | 2024.01.28 |
두근두근 파이썬(개정판)_ch10 tkinter로 GUI 만들기 (1) | 2024.01.26 |
두근두근 파이썬(개정판)_ch9 리스트와 딕셔너리 연습문제 1~8번 (2) | 2024.01.25 |