Coding/Python Matlab

파이썬 클래스 matlab structured variable 처럼 사용하기 ???

smores 2019. 1. 26. 03:53

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