"파이썬 OOP"의 두 판 사이의 차이

잔글 (Jmnote님이 파이썬 객체지향 프로그래밍 문서를 파이썬 OOP 문서로 이동했습니다)
잔글 (봇: 자동으로 텍스트 교체 (-source +syntaxhighlight))
 
(다른 사용자 한 명의 중간 판 9개는 보이지 않습니다)
5번째 줄: 5번째 줄:


==객체 생성==
==객체 생성==
*<code>class</code>키워드를 사용하여 Person라는 객체 틀을 만듬
* <code>class</code>키워드를 사용하여 Person라는 클래스(객체 생성 틀)을 만든다.
*Person라는 객체 생성 틀을 가지고 JOHN, JMNOTE를 각각 생성함
* Person 클래스을 가지고 john, jane 객체를 각각 생성하였다.
<source lang="python">
<syntaxhighlight lang="python" run>
class Person(object):
class Person(object):
     def __init__(self, name, age):
     def __init__(self, name, age):
14번째 줄: 14번째 줄:


     def print_name(self):
     def print_name(self):
         print self.name
         print( self.name )


     def print_age(self):
     def print_age(self):
         print self.age
         print( self.age )


JOHN = Person('john', 30)
john = Person('John Smith', 30)
JMNOTE = Person('jmnote', 20)
jane = Person('Jane Doe', 20)


JOHN.print_name()   # john
john.print_name() # John Smith
JOHN.print_age()   # 30
john.print_age() # 30
JMNOTE.print_name() # jmnote
jane.print_name() # Jane Doe
JMNOTE.print_age()  # 20
jane.print_age()  # 20
 
</syntaxhighlight>
</source>


:→__init__와 print_name의 self는 자기 자신을 말함
:→__init__와 print_name의 self는 자기 자신을 말함
34번째 줄: 33번째 줄:
==상속==
==상속==
* 상속은 하나의 클래스에서 또 다른 클래스의 정의를 그대로 상속하여 가져옴  
* 상속은 하나의 클래스에서 또 다른 클래스의 정의를 그대로 상속하여 가져옴  
<source lang="python">
<syntaxhighlight lang="python" run>
class person:
class Person:
     def __init__(self, name, age):
     def __init__(self, name, age):
         self.name = name
         self.name = name
41번째 줄: 40번째 줄:


     def print_name(self):
     def print_name(self):
         print(self.name)
         print( self.name )
 
class Programmer(Person): # Person 클래스 상속
    def print_job(self):
        print('Programmer')


class programmer(person): # person 객체 상속
class Editor(Person): # Person 클래스 상속
     def printJob(self):
     def print_job(self):
         print('programmer')
         print('Editor')


class editor(person): # person 객체 상속
jane = Programmer('Jane Doe', 20)  
    def printJob(self):
jane.print_name() # Jane Doe
        print('editor')
jane.print_job() # Programmer


jmnote = programmer('jmnote', 20)
john = Editor('John Smith', 30)  
jmnote.print_name() #jmnote
john.print_name() # John Smith
jmnote.printJob() #programmer
john.print_job() # Editor
john = editor('john', 30)  
</syntaxhighlight>
john.print_name() #john
:→ Programmer와 Editor 클래스에서 Person 클래스를 상속하였음
john.printJob() #editor:
</source>
:→ programmer와 editor 클래스에서 person 이라는 슈퍼클래스를 상속하였음  


==객체 스타일==
==객체 스타일==
;Python3
{{소스헤더|새 형식}}
* New-style
<syntaxhighlight lang='python'>
<source lang='python'>
class Person(object):
class Person(object)
</syntaxhighlight>
</source>
: → object 명시
: → 명시적으로 object
* New-style
<source lang='python'>
class Person:
</source>
: → object를 명시하지 않았지만 object는 자동 상속됨
 
;Python2
* New-style
<source lang='python'>
class Person(object)
</source>
→ python2에서 New-style로 class를 정의 하려면 명시적으로 object를 상속해 주어야함


* Old-style
{{소스헤더|예전 형식}}
<source lang='python'>
<syntaxhighlight lang='python'>
class Person:
class Person:
</source>
</syntaxhighlight>
:→ python2에서 명시적으로 object를 상속해 주지 않을 경우 Old-style 클래스로 정의됨
: → object를 명시하지 않았지만 object는 자동 상속됨


==참고==
==참고==

2020년 11월 2일 (월) 02:32 기준 최신판

1 개념[ | ]

Object-Oriented Programming (OOP)
객체지향 프로그래밍
  • 객체 생성은 키워드 class를 사용

2 객체 생성[ | ]

  • class키워드를 사용하여 Person라는 클래스(객체 생성 틀)을 만든다.
  • Person 클래스을 가지고 john, jane 객체를 각각 생성하였다.
Python
CPU
0.0s
MEM
8M
0.1s
Copy
class Person(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def print_name(self):
        print( self.name )

    def print_age(self):
        print( self.age )

john = Person('John Smith', 30)
jane = Person('Jane Doe', 20)

john.print_name() # John Smith
john.print_age()  # 30
jane.print_name() # Jane Doe
jane.print_age()  # 20
John Smith
30
Jane Doe
20
→__init__와 print_name의 self는 자기 자신을 말함
print_name를 살펴보면, JOHN.print_name()이 실행 될 때 self는 JOHN, JMNOTE.print_name()이 실행 될 때 self는 JMNOTE가 됨

3 상속[ | ]

  • 상속은 하나의 클래스에서 또 다른 클래스의 정의를 그대로 상속하여 가져옴
Python
Copy
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age 

    def print_name(self):
        print( self.name )

class Programmer(Person): # Person 클래스 상속
    def print_job(self):
        print('Programmer')

class Editor(Person): # Person 클래스 상속
    def print_job(self):
        print('Editor')

jane = Programmer('Jane Doe', 20) 
jane.print_name() # Jane Doe
jane.print_job()  # Programmer

john = Editor('John Smith', 30) 
john.print_name() # John Smith
john.print_job()  # Editor
Loading
→ Programmer와 Editor 클래스에서 Person 클래스를 상속하였음

4 객체 스타일[ | ]

새 형식
Python
Copy
class Person(object):
→ object 명시
예전 형식
Python
Copy
class Person:
→ object를 명시하지 않았지만 object는 자동 상속됨

5 참고[ | ]