Создание объекта Python

Синтаксис, чтобы создать объект pyObj Python®:

pyObj = py.modulename.ClassName(varargin)

где varargin является списком аргументов конструктора, заданных методом __init__ в ClassName.

В MATLAB® объекты Python являются ссылочными типами (объекты указателя) и не придерживаются копии на присвоении MATLAB и правил передачи значением. Когда вы копируете объект указателя, только указатель копируется, и и старые и новые указатели относятся к тем же данным. Когда вы копируете переменную MATLAB (объект значения), переменные данные также копируются. Новая переменная независима от изменений в исходной переменной.

Следующий пример создает объект класса TextWrapper в модуле библиотеки textwrap стандарта Python.

Считайте подпись конструктора, __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.

Создайте список перенесенных строк, w, от входа T.

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 ко лжи заменяет значение width в отображении.

Связанные примеры

Больше о