ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

Python オブジェクトの作成

Python® オブジェクト pyObj を作成する構文は、次のとおりです。

pyObj = py.modulename.ClassName(varargin)

ここで、varargin は、ClassName__init__ メソッドで指定されているコンストラクター引数のリストです。

MATLAB® では、Python オブジェクトは "参照型" (ハンドル オブジェクト) であり、MATLAB の代入時コピーおよび値受け渡しのルールには従いません。ハンドル オブジェクトをコピーする場合、ハンドルのみがコピーされ、新旧両方のハンドルは同じデータを参照します。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 を cell 配列に変換し、結果を表示します。

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 の値が上書きされます。

関連する例

詳細