Matlab 의 경우 . 하나 붙여서 structured instance 를 아무렇게나 생성하고 사용할 수 있다. 즉, dynamic 하게 구조체 안의 새 변수같은 것도 생성해 버리고 그 변수의 존재 여부로 간단히 체크하는 함수들을 제공한다. 잘못 사용하면 많은 에러를 생성할 가능성도 있지만, 복잡한 시스템 개발을 빠르게 진행할 때 생각보다 유용하게 써먹고 있는 것을 새 회사에 와서 보게 되었다.
그래서 혹시 파이썬도 비슷하게 클래스를 써 먹을 수 있나 테스트를 해 보니 코딩한 사람의 책임 하에서 어느정도 Matlab 스크립트에서 보던 것과 유사한 유연성을 발휘할 수 있는 듯 하다. 아마도 정식 프로그래밍으로는 권장하지 않는 스타일이 될 듯 하지만, 일단 편하게는 써 먹을 수 있을듯.
생각나는 데로 테스트 해 본 내용을 일단 메모로 남겨본다.
class A:
a = 1
b = 'tom'
X = []
def __init__(self):
self.name = 'myname'
def p1(self):
print(self.a)
def pname(self):
print(self.name)
print(A.a)
print(A.b)
A.c = 10
print(A.c)
CA = A()
CA.a = 3
print(CA.a)
print(CA.b)
print(CA.c)
CA.d = 100
print(CA.d)
CB = A()
print(CB.a)
print(CB.b)
print(CB.c)
#~ print(CB.d) # error. d is defined only in CA
#~ print(A.d) # error. d is defined only in CA
A.X = list(range(10))
print(A.X)
print(CA.X)
CA.X = [1,2,3]
print(CA.X) # CA.X changed to [1,2,3]
print(A.X) # AX keep original data [1,2,...,9]
CA.p1()
#~ A.p1() # error, class itself, not an instance of the class A
#~ print(A.name) # error, variable defined in __init__ is a private one
print(CA.name) # OK
#~ A.pname() # error, class itself, not an instance of the class A
CA.pname() # OK
'Coding > Python Matlab' 카테고리의 다른 글
Conda (0) | 2021.03.04 |
---|---|
simple python graphics module (0) | 2019.09.30 |
matlab global variable (0) | 2019.01.05 |
TIF 및 이미지 다루기 (0) | 2018.11.14 |
numpy 요약 (0) | 2018.11.14 |