컴퓨터/파이썬

파이썬(Python) - Class ②

해피밀세트 2020. 4. 7. 16:53

 

 

 

Class에서 SQLite 사용하기

 

# sqlite3 임포트

import sqlite3

 

# 클래스 생성

class Health:
    def __init__(self,arg1,arg2,arg3,arg4):
        self.name = arg1
        self.age = arg2
        self.height = arg3
        self.weight = arg4     
    
    def print_info(self):
        print("이름:",self.name)
        print("나이:",self.age)
        print("키:",self.height)
        print("몸무게:",self.weight)
    

# sqlite 사용하기
    def input(self):
        self.conn = sqlite3.connect("C:/data/health.db")
        self.c = self.conn.cursor()
        self.c.execute("select name from sqlite_master where name = 'health'")
        if self.c.fetchone() is None:
            self.c.execute("create table health(name text, age text, height text, weight text)")
        self.c.execute("insert into health(name,age,height,weight) values(?,?,?,?)",
                      (self.name,self.age,self.height,self.weight)) # ?는 위치표기
        self.c.execute("select * from health")
        print(self.c.fetchall())
    
    def commit(self):
        self.conn.commit()
    
    def rollback(self):
        self.conn.rollback()
    
    def close(self):
        self.c.close()
        self.conn.close()

 

# 출력

def set_health():
    arg1 = input("이름을 입력하세요:")
    arg2 = input("나이를 입력하세요:")
    arg3 = input("키를 입력하세요:")
    arg4 = input("몸무게를 입력하세요:")
    con1 = Health(arg1,arg2,arg3,arg4)
    con1.print_info()
    con1.input()
    con1.commit()
    con1.close()
set_health()

 


 

변수와 상수

 

1) 변수 사용

class Person :
    hobby = "여행"
    def __init__(self,name):
        self.name = name
    def myPrint(self):
        print("{}의 취미는 {}이다.".format(self.name,self.hobby))
 

p1 = Person("해피밀")
p1.myPrint()

p1.hobby = "영화감상"
p1.myPrint()

p2 = Person("샌님")
p2.myPrint()

Person.hobby = "게임"
Person.hobby

 

# 인스턴스를 통해서 변수를 바꿔놓은건 안바뀐다.
p1.myPrint() 
# 클래스를 통해서 변수를 바꿔놓았기 때문에 바뀐다.
p2.myPrint()

p3 = Person("쭈꾸미")
p3.myPrint()

p2.hobby = "요리"
p2.myPrint()

 

2) 상수 사용

class Person :
    __hobby = "여행"
    def __init__(self,name):
        self.name = name
    def myPrint(self):
        print("{}의 취미는 {}이다.".format(self.name,self.__hobby))

 

p1 = Person("해피밀")
p1.myPrint()

p1.__hobby = "영화감상"
p1.myPrint()

p2 = Person("샌님")
p2.myPrint()

p2.__hobby = "게임"
p2.myPrint()

Person.__hobby = "게임"
Person.__hobby

p3 = Person("쭈꾸미")
p3.myPrint()

p2.myPrint()

 


 

상속

  • 메소드의 속성을 물려 받는다.
  • 공통된 내용을 하나로 묶어서 관리할 있다.

class Parents:
    def __init__(self,name,pn):
        self.name = name
        self.pn = pn
    def PrintInfo(self):
        print("이름 : {},전화번호 : {}".format(self.name,self.pn))

 

p = Parents("해피밀","010-1234-5678")
p.PrintInfo()

class Child:
    def __init__(self,name,pn,addr,sn):
        self.name = name
        self.pn = pn
        self.addr = addr
        self.sn = sn

 

self,name,pn을 상속받겠다.
class Child:
    def __init__(self,name,pn,addr,sn):
        Parents.__init__(self,name,pn)   
        self.addr = addr
        self.sn = sn

 

부모 메소드 상속/클래스이름.메소드
class Child:
    def __init__(self,name,pn,addr,sn):
        Parents.__init__(self,name,pn)
        self.addr = addr
        self.sn = sn
    def PersonalData(self):
        Parents.PrintInfo(self)
        print("주소:{}, 주민번호 : {}".format(self.addr,self.sn))

 

c = Child("샌님","010-1111-2222","서울시","010101-1234567")
c.PersonalData()

class Person :
    def __init__(self,name,age,job):
        self.name = name
        self.age = age
        self.job = job
    def PrintMe(self):
        print("이름은 {}, 나이는 {}, 직업은 {} 입니다.".format(self.name,self.age,self.job))

 

p = Person("해피밀","27","무직")
p.PrintMe()

class Child(Person):
    def __init__(self,name,age,job,addr,birthday):
        Person.__init__(self,name,age,job)
        self.addr = addr
        self.birthday = birthday
    def PrintMe(self):
        Person.PrintMe(self)
        print("집주소는 {}, 생일은 {}입니다.".format(self.addr,self.birthday))

 

c = Child("샌님","29","무직","서울","12월 8일")
c.PrintMe()

 


 

다중상속

class Add:

    def add(self,x,y):

        return x+y

   

class Multiply:

    def multiply(self,x,y):

        return x*y

 

class Divide:

    def divide(self,x,y):

        return x/y

 

# 다중상속

class Calculator(Add, Multiply, Divide):

    def sub(self,x,y):

        return x-y

 

cal = Calculator()

cal.add(10,20)

cal.multiply(10,20

cal.divide(10,2)

cal.sub(10,8)

# 인스턴스를 통해서 호출하기

class Calculator:

    def add(self,x,y):

        return x+y

    def sub(self,x,y):

        return x-y

    def multiply(self,x,y):

        return x*y

    def divide(self,x,y):

        return x/y

 

c = Calculator()
c.add(10,20)

# 클래스를 통해서 호출하기

class Calculator:

    @staticmethod

    def add(x,y):

        return x+y

    @staticmethod

    def sub(x,y):

        return x-y

    @staticmethod

    def multiply(x,y):

        return x*y

    @staticmethod

    def divide(self,x,y):

        return x/y

 
Calculator.add(10,20)
반응형