Как использовать setattr, если значение не одно? - PullRequest
1 голос
/ 22 мая 2019

Я хочу использовать setattr для создания графика:

    import numpy as np
    import matplotlib.pyplot as plt

    x = np.random.rand(10)
    y = np.random.rand(10)

    # I want this:
    # plt.scatter(x, y)
    setattr(plt, "scatter", [HOW TO PASS X AND Y])

Поскольку значение, которое я хочу передать, не является единичным, как мне это сделать?По сути, это должен быть результат: plt.scatter(x, y)

Ответы [ 2 ]

2 голосов
/ 22 мая 2019

Я думаю, что вы ищете getattr.В этом случае он вернет Callable, так что вы можете просто рассматривать его как функцию, например так:

getattr(plt, 'scatter')(x, y)

То же самое, что и это:

plt.scatter(x, y)

Использованиеsetattr таким образом было бы больше похоже на plt.scatter = (x, y), что я не думаю, что вы хотите сделать.

1 голос
/ 22 мая 2019

Вы не устанавливаете атрибут, а вместо этого вызываете его.

getattr(plt, some_func)(x, y)

вызовет

plt.some_func(x, y)

Итак, в вашем случае вы хотите запустить

getattr(plt, 'scatter')(x, y)
...