Может кто-нибудь объяснить этот код

Я иногда использую getattr(..) для ленивого инициализации атрибутов вторичной важности непосредственно перед тем, как они используются в коде.

Сравните следующее:

class Graph(object):
    def __init__(self):
        self.n_calls_to_plot = 0

    #...
    #A lot of code here
    #...

    def plot(self):
        self.n_calls_to_plot += 1

К этому:

class Graph(object):
    def plot(self):
        self.n_calls_to_plot = 1 + getattr(self, "n_calls_to_plot", 0)

Преимущество второго способа заключается в том, что n_calls_to_plot появляется только вокруг места в коде, где он используется. Это полезно для читаемости, потому что (1) вы можете сразу увидеть, какое значение оно начинает при чтении, как оно используется, (2) оно не вводит отвлечение в метод __init__(..), который в идеале должен быть о концептуальном состоянии класса, а не некоторый счетчик коммунальных услуг, который используется только одним из методов функции по техническим причинам, таким как оптимизация, и не имеет ничего общего со значением объекта.

-3
задан Cris Luengo 13 July 2018 в 20:33
поделиться

1 ответ

fid = fopen(filename,'rb');
y = fread(fid,'uint8=>double');

Эта функция открывает файл в режиме чтения (двоичный), затем читает файл, как будто он содержит данные uint8, и делает его похожим на данные double.

y = y-127.5;

Для каждого из данных в массиве уменьшите значение на 127.5.

y = y(1:2:end) + i*y(2:2:end);

Теперь возьмем каждые два числа после числа в массиве и сделаем их сложным значением, например:

y = [1, 2, 3, 4, 5, 6]
y = y(1:2:end) + i*y(2:2:end);
% Result: y = [1 + 2i, 3 + 4i, 5 + 6i]
0
ответ дан KorelK 17 August 2018 в 12:09
поделиться
  • 1
    Хорошо спасибо MR.KoreLK, это все, что мне нужно знать – AceSiddig 14 July 2018 в 18:54
Другие вопросы по тегам:

Похожие вопросы: