Не-члены и функции-члены в Python

Я относительно новичок в Python и изо всех сил пытаюсь совместить особенности языка с привычками, которые я усвоил из своего опыта работы с C++ и Java.

Последняя проблема, с которой я столкнулся, связана с инкапсуляцией, в частности с идеей, которую лучше всего резюмирует пункт 23 книги Мейера «Эффективный C++ »:

Предпочитать не-член не-дружественные функции к функциям-членам .

Не обращая внимания на отсутствие friendмеханизма, не-функции-члены также считаются предпочтительнее функций-членов в Python ?

Обязательный глупый пример.:

class Vector(object):
    def __init__(self, dX, dY):
        self.dX = dX
        self.dY = dY

    def __str__(self):
        return "->(" + str(self.dX) + ", " + str(self.dY) + ")"

    def scale(self, scalar):
        self.dX *= scalar
        self.dY *= scalar

def scale(vector, scalar):
    vector.dX *= scalar
    vector.dY *= scalar

Имея v = Vector(10, 20), мы можем вызвать либо v.scale(2), либо scale(v, 2), чтобы удвоить величину вектора.

Принимая во внимание тот факт, что в данном случае мы используем свойства, какой из двух вариантов-лучше-и почему?

19
задан Community 23 May 2017 в 12:02
поделиться