2015-01-08 6 views
1

Я хочу иметь базовый класс, который сделает каждый подкласс содержащим список без необходимости делать это вручную для каждого подкласса? Например, когда я создаю Subclass из моего BaseClass, я хочу, чтобы мой Subclass имел список element_list автоматически. В настоящее время я делаю это так:У каждого подкласса есть собственный список?

class BaseClass: 
    element_list = ['Base Element', 'More Element\'s'] 
    def do_stuff(): pass 

class Subclass(BaseClass): 
    # Replaces BaseClass' element_list 
    element_list = ['Sub Element', 'More Sub Element\'s'] 
    def do_sub_stuff(): pass 

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

Мне бы очень хотелось, чтобы у него был пустой список по умолчанию, даже если он не определен вручную в подклассе и что каждый подкласс автоматически будет иметь свой собственный уникальный список.

Возможно ли это?

+0

как насчет возврата списка из метода, а в класс переопределения, объединить два списка, чтобы у вас были все элементы? – MightyPork

+0

Если вы хотите, чтобы по умолчанию был пустой список, вы не могли бы установить 'element_list' в пустой список в' BaseClass'? – rlms

+0

Какова цель этого списка? Вероятно, это лучшее решение, чем списки, если мы знаем больше о проблеме. – Daniel

ответ

3

Практически никогда не бывает, чтобы в качестве атрибутов класса изменялся объект. Просто используйте кортежи, вы всегда можете переписать атрибут, если вам нужно изменить свой список.

+0

Будет, не подумал бы об этой возможности, хотя это совершенно очевидно. Большое спасибо :) –

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