Если класс имеет несколько атрибутов или один атрибут как словарь с множеством ключей, Python3 - PullRequest
0 голосов
/ 19 октября 2018

У меня есть класс для расчета температуры объекта в разных положениях на основе температуры окружающей среды.У меня есть два пути реализации.В BodyA температура каждой позиции является атрибутом класса;в то время как в BodyB есть атрибут pos_t, который является диктом, а температура каждой позиции является просто парой ключ-значение в диктовке.

class BodyA:
    def __init__(self, ambient_temperature)
        self.amb_t = ambient_temperature
        self.pos1_t = self.amb_t + 1
        self.pos2_t = self.amb_t * 2
        self.pos3_t = self.pos1_t + self.pos2_t - 5


class BodyB:
    def __init__(self, ambient_temperature)
        self.amb_t = ambient_temperature
        self.pos_t = dict()
        self.pos_t['pos1'] = self.amb_t + 1
        self.pos_t['pos2'] = self.amb_t * 2
        self.pos_t['pos3'] = self.pos_t['pos1'] + self.pos_t['pos2'] - 5

В практическом случаедо 10 позиций, и я хочу построить дочерний класс из него.И некоторые детские классы не имеют определенных позиций.Например, у некоторых детей pos2 может отсутствовать.

Не могли бы вы сообщить мне, какой дизайн лучше с точки зрения ООП и эффективности.Благодаря.

1 Ответ

0 голосов
/ 19 октября 2018

Структура данных для хранения некоторых пользовательских идентификаторов, которые могут или могут существовать, явно вызывает dict.Так как атрибуты класса также хранятся во внутренней диктовке, первый подход также может быть использован, но для практического манипулирования без явного написания от руки членам потребуется другой код.Я подозреваю, что производительность не будет иметь значения.Если вы считаете, что это имеет значение, возможно, будет полезен редизайн структуры данных, в котором классы вообще не используются, поскольку тогда может потребоваться время обработки создания объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...