Есть ли какое-либо преимущество в использовании класса Python?

Хорошо, проблема решена ... новейший NetBeans 8.1 создает Glassfish-resources.xml в неправильной папке. Если у вас такая же проблема, просто переместите файл glassfish-resources.xml из файла конфигурации в серверные ресурсы ...

16
задан Mat 18 January 2009 в 22:09
поделиться

7 ответов

Нет ни одного. Это - то, для чего модули: группировка связанных функций. Используя класс, полный статических методов, заставляет меня съежиться от Javaitis. Единственное время я использовал бы статическую функцию, - то, если функция является неотъемлемой частью класса. (На самом деле я, вероятно, хотел бы использовать метод класса так или иначе.)

31
ответ дан 30 November 2019 в 15:38
поделиться

Нет. Было бы лучше сделать их функциями и если они связаны, размещают их в свой собственный модуль. Например, если у Вас есть класс как это:

class Something(object):

    @staticmethod
    def foo(x):
        return x + 5

    @staticmethod
    def bar(x, y):
        return y + 5 * x

Тогда было бы лучше иметь модуль как,

# something.py

def foo(x):
    return x + 5

def bar(x, y):
    return y + 5 * x

Тот путь, Вы используете их следующим образом:

import something
print something.foo(10)
print something.bar(12, 14)

не боятся пространств имен. ;-)

14
ответ дан 30 November 2019 в 15:38
поделиться

Если Ваши функции зависят друг от друга или глобального состояния, рассматривают также третий подход:

class Something(object):
    def foo(self, x):
        return x + 5

    def bar(self, x, y):
        return y + 5 * self.foo(x)

something = Something()

Используя это решение можно протестировать функцию в изоляции, потому что можно переопределить поведение другой функции или ввести зависимости с помощью конструктора.

5
ответ дан 30 November 2019 в 15:38
поделиться

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

, Если Ваш класс ничего не содержит кроме статических методов, то Ваш класс является просто синтаксическим хламом и прямыми функциями, намного более ясны и все, в чем Вы нуждаетесь.

1
ответ дан 30 November 2019 в 15:38
поделиться

Я соглашаюсь с Benjamin. Вместо того, чтобы иметь набор статических методов, у Вас должен, вероятно, быть набор функций. И если Вы хотите организовать их, необходимо думать об использовании модулей, а не классов. Однако, если Вы хотите осуществить рефакторинг свой код, чтобы быть OO, это - другой вопрос.

0
ответ дан 30 November 2019 в 15:38
поделиться

Мало того, что нет никаких преимуществ, но и это делает вещи медленнее, чем использование модуля полный методов. Существует намного меньше потребности в статических методах в Python, чем существует для них в Java или c#, они используются в совершенно особых случаях.

0
ответ дан 30 November 2019 в 15:38
поделиться

Зависит от природы функций. Если они не решительно не связаны (минимальная сумма вызовов между ними), и у них нет состояния тогда да, я сказал бы, выводят их в модуль. Однако Вы могли стрелять себе в ногу, если когда-нибудь необходимо изменять поведение, поскольку Вы бросаете наследование из окна. Таким образом, мой ответ , возможно , и быть уверенным, что Вы смотрите на свой конкретный сценарий скорее тогда всегда предположение, что модуль является лучшим способом собрать ряд методов.

0
ответ дан 30 November 2019 в 15:38
поделиться
Другие вопросы по тегам:

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