2015-07-04 5 views
1

Я - продвинутый программист, который недавно начал использовать и изучать python. Я недавно столкнулся с вопросом this. Ответы в этом вопросе предполагают, что вместо использования статического метода внутри класса, считается, что лучше всего использовать метод, а не использовать класс вообще.Как часто использовать статические методы в Python

Код конструкции 1:

gameResolution.py

width = 300 
height = 300 
# other variables, and functions following... 

screenResolution.py

width = 1920 
height = 1080 
# other variables and functions following... 

код дизайн 2:

resolution.py

class GameResolution: 
    width = 300 
    height = 300 
    # static functions following 

class ScreenResolution: 
    width = 1920 
    height = 1080 
    # static functions following 

Как вы можете видеть, код дизайн 2 делает намного больше смысла (на мой взгляд) в этой ситуации. Я мог бы упаковать все, что связано с этим объектом (GameResolution или ScreenResolution, например) внутри класса и всех этих классов внутри файла resolution.py.

Если бы я следил за Код дизайн 1 Я бы закончил с множеством маленьких .py файлов, каждый из которых представлял бы очень маленький класс. Верный ?

Итак, действительно ли это, что статические методы - плохой подход для python? В этой ситуации, что бы вы сделали?

+0

Было бы лучше сделать атрибуты объекта 'width' и' height', а также методы нестатические. Затем вы можете создать несколько 'GameResolution' и т. Д. – bereal

+0

@bereal. Может быть больше переменных, поскольку я подразумеваю с помощью' # других переменных и следующих функций ... ', которые не соответствуют друг другу, поэтому создание класса' Resolution' на самом деле не является возможное. Однако, поскольку у них есть несколько общих функций, имеет смысл держать их внутри общего файла 'resolution.py', на мой взгляд, вместо создания небольших файлов' .py' douzen – dimitris93

+1

Я не вижу, как с другими переменными и функции не могут совпадать, если вы разработали все это в стиле OO. – bereal

ответ

2

Лучшее решение зависит от вашего стиля. Это, как говорится, я не думаю, что делать классы, которые, как старая статичность, - это путь. Я бы сделал одно из следующего:

  1. Создайте класс, который обрабатывает все материалы разрешения (GameResolution/ScreenResolution/etc) и делает отдельные экземпляры для каждого.
  2. Изменение названия width и height к game_width, game_height, screen_width и screen_height.

Что касается того, когда я использую статические методы, единственное время для создания объектов по-разному отличается от инициализатора по какой-то причине. Однако необходимость делать это довольно редко. Это определенно звучит так, будто ваш прецедент лучше подходит для одного класса, чтобы представлять все, или если они достаточно разные, а затем глобальные и функции вместо классов и статических методов.

+0

Это полезно, спасибо большое. Классы с двумя «разрешениями» различны, поэтому я не могу просто создать общий класс «Resolution». Поэтому мой пример с разрешениями был довольно плохим примером. Однако, как вы говорите, «глобалы и функции вместо классов и статических методов» - это то, что все, кажется, используют, и вы также говорите, что это путь, так что это должно быть – dimitris93

Смежные вопросы