- Arawn's Dev Blog
- Outsider's Dev Story
- Toby's Epril
- Benelog
- NHN 개발자 블로그
- SK 플래닛 기술 블로그
- OLC CENTER
- 소프트웨어 경영/공학 블로그
- 모바일 컨버전스
- KOSR - Korea Operating System …
- 넥스트리 블로그
- 리버스코어 ReverseCore
- SLiPP
- 개발자를 위하여... (Nextree 임병인 수석)
- "트위터 부트스트랩: 디자이너도 놀라워할 매끈하고 직관…
- Learning English - The English…
- real-english.com
- 'DataScience/Deep Learning' 카테…
- Deep Learning Summer School, M…
- Deep Learning Courses
민서네집
파이썬 기초 강의 본문
http://www.slideshare.net/dahlmoon/jupyter-notebok-tensorboard-20160706?from_m_app=ios
http://www.slideshare.net/dahlmoon/matplotlib-20160730
http://www.slideshare.net/dahlmoon/20160623-63318427
PYTHON 이해하기
http://www.slideshare.net/dahlmoon/python-20160815
http://www.slideshare.net/dahlmoon/python-numpyarray-20160815
A Byte of Python
두 개의 클래스에서 생성자 공통으로 사용하기 성공!
def __init__(self, name):
self.name = name
print("call __init__")
return self
class Person:
__init__ = __init__
class People:
__init__ = __init__
p = __init__(Person, "Person")
print(p.name) # "Person" 출력
q = __init__(People, "People")
print(q.name) # "People" 출력
이렇게 하면 class 에 변수가 생겨서, class 변수가 되어서 값을 공유하게 된다.
클래스 안의 생성자는 호출하지 않은것 같다. 생성자에서 return 하면 에러가 나야 되는데, 에러가 안난 것을 보니...
def __init__(self, name):
self.name = name
print("call __init__")
return self
class Person:
__init__ = __init__
class People:
__init__ = __init__
p = __init__(Person, "Person")
print(p.__dict__)
print(Person.__dict__)
print(p.name) # "Person" 출력
q = __init__(People, "People")
print(q.name) # "People" 출력
print(q.__dict__)
s = __init__(Person, "PersonSSS")
print(s.name)
print(p.name)
[출력결과]
call __init__ {'__module__': '__main__', '__doc__': None, '__init__': <function __init__ at 0x00000000041BAC18>, 'name': 'Person'} {'__module__': '__main__', '__doc__': None, '__init__': <function __init__ at 0x00000000041BAC18>, 'name': 'Person'} Person call __init__ People {'__module__': '__main__', '__doc__': None, '__init__': <function __init__ at 0x00000000041BAC18>, 'name': 'People'} call __init__ PersonSSS PersonSSS # p.name이 "Person"으로 출력되야 하는데, "PersonSSS"로 바뀜.
아래와 같이 하면, 멤버변수가 객체에 생겨서 객체마다 다른 name 값을 갖게 된다.
def __init__(self, name=None):
self.name = name
class Person(object):
__init__ = __init__
p = Person()
__init__(p,"dahl")
print(Person.__dict__)
print(p.__dict__)
print(p.name)
class People():
__init__ = __init__
peo = People()
__init__(peo,"Moon")
print(People.__dict__)
print(peo.name)
print(peo.__dict__)
[출력결과]
{'__dict__': <attribute '__dict__' of 'Person' objects>, '__module__': '__main__', '__weakref__': <attribute '__weakref__' of 'Person' objects>, '__doc__': None, '__init__': <function __init__ at 0x0000000003DBEA58>}
{'name': 'dahl'}
dahl
{'__module__': '__main__', '__doc__': None, '__init__': <function __init__ at 0x0000000003DBEA58>}
Moon
{'name': 'Moon'}
생성자를 공유하는 코드는 아래와 같이 하는 것이 더 맞을것 같다. 생성자는 자동으로 호출되는 것이라서 __init__()을 호출하는 부분을 삭제하고, 객체를 생성할 때 인자를 넣어서 호출함.
def __init__(self, name):
self.name = name
class Person(object):
__init__ = __init__
p = Person("dahl")
print(Person.__dict__)
print(p.__dict__)
print(p.name)
class People():
__init__ = __init__
peo = People("Name1")
print(People.__dict__)
print(peo.name)
print(peo.__dict__)
her = People("Name2")
print(her.name)
print(her.__dict__)
print(peo.name)
print(her.name)
'Python' 카테고리의 다른 글
Python Help (pdf, chm) (0) | 2016.08.07 |
---|---|
효율적인 Python String Concatenation (0) | 2016.08.04 |
[파이썬으로 풀어보는 수학] Doing Math With Python (0) | 2016.07.31 |
[Nature of Code] Processing (0) | 2016.07.31 |
Python Pandas 기초 - DataFrame 사용법 (0) | 2016.06.17 |