Main Content

이 페이지의 내용은 이전 릴리스에 관한 것입니다. 해당 영문 페이지는 최신 릴리스에서 제거되었습니다.

Python 객체 만들기

Python® 객체 pyObj를 만들기 위한 구문은 다음과 같습니다.

pyObj = py.modulename.ClassName(varargin)

여기서 vararginClassName에서 __init__ 메서드로 지정된 생성자 인수의 목록입니다.

MATLAB®에서 Python 객체는 참조 유형(핸들 객체)으로, MATLAB 할당 시 복사(copy-on-assignment) 규칙과 값 방식 전달(pass-by-value) 규칙을 따르지 않습니다. 핸들 객체를 복사하면 핸들만 복사되고 이전 핸들과 새 핸들이 모두 같은 데이터를 참조합니다. MATLAB 변수(값 객체)는 복사하면 변수 데이터도 복사됩니다. 새 변수는 원래 변수의 변경과 관련이 없습니다.

다음 예제에서는 Python 표준 라이브러리 textwrap 모듈에 TextWrapper 클래스의 객체를 만듭니다.

생성자 시그니처 __init__를 읽어 들입니다.

py.help('textwrap.TextWrapper.__init__')
Help on method __init__ in textwrap.TextWrapper:

textwrap.TextWrapper.__init__ = __init__(self, width=70, initial_indent='', subsequent_indent='', expand_tabs=True, replace_whitespace=True, fix_sentence_endings=False, break_long_words=True, drop_whitespace=True, break_on_hyphens=True) unbound textwrap.TextWrapper method

디폴트 TextWrapper 객체를 만듭니다. 각 인수가 디폴트 값(등호(=) 문자로 식별됨)을 가지므로 입력 인수를 전달할 필요가 없습니다.

tw = py.textwrap.TextWrapper;
tw = 

  Python TextWrapper with properties:

                    width: 70
        subsequent_indent: [1x1 py.str]
    wordsep_simple_re_uni: [1x1 py._sre.SRE_Pattern]
     fix_sentence_endings: 0
         break_on_hyphens: 1
         break_long_words: 1
           wordsep_re_uni: [1x1 py._sre.SRE_Pattern]
           initial_indent: [1x1 py.str]
              expand_tabs: 1
       replace_whitespace: 1
          drop_whitespace: 1

    <textwrap.TextWrapper instance at 0x000000006D58F808>

논리값(예: break_long_words 속성)을 변경하려면 다음을 입력하십시오.

tw.break_long_words = 0;

숫자형 값(예: width 속성)을 변경하려면 먼저 숫자형을 확인하십시오.

class(tw.width)
ans =

int64

기본적으로, MATLAB 숫자를 Python 함수에 전달할 경우 Python은 이를 부동소수점으로 읽습니다. 함수에 정수가 필요한 경우, Python은 오류를 발생시키거나 예기치 않은 결과를 생성할 수 있습니다. MATLAB 숫자를 명시적으로 정수로 변환합니다. 예를 들어, 다음을 입력합니다.

tw.width = int64(3);

wrap 메서드에 대한 도움말을 읽습니다.

py.help('textwrap.TextWrapper.wrap')
Help on method wrap in textwrap.TextWrapper:

textwrap.TextWrapper.wrap = wrap(self, text) unbound textwrap.TextWrapper method
    wrap(text : string) -> [string]
    
    Reformat the single paragraph in 'text' so it fits in lines of
    no more than 'self.width' columns, and return a list of wrapped
    lines.  Tabs in 'text' are expanded with string.expandtabs(),
    and all other whitespace characters (including newline) are
    converted to space.

입력 인수 T에서 줄 바꿈된 라인 목록 w를 생성합니다.

T = 'MATLAB® is a high-level language and interactive environment for numerical computation, visualization, and programming.';
w = wrap(tw,T);
whos w
  Name      Size            Bytes  Class      Attributes

  w         1x1               112  py.list   

py.list를 셀형 배열로 변환하고 결과를 표시합니다.

wrapped = cellfun(@char, cell(w), 'UniformOutput', false);
fprintf('%s\n', wrapped{:})
MATLAB®
is
a
high-
level
language
and
interactive
environment
for
numerical
computation,
visualization,
and
programming.

width가 3이지만, break_long_words 속성을 false로 설정하면 디스플레이에서 width 값이 재정의됩니다.

관련 예제

세부 정보