Создание объекта 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 в отображении.

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

Больше о

Была ли эта тема полезной?