Как назначить переменные экземпляра как значения по умолчанию для аргументов ключевых слов в одном классе в Python

StackOverflow https://stackoverflow.com//questions/23002587

Вопрос

в Python 3.3+, учитывая класс с способом, класс имеет переменную экземпляра, которая представляет собой простой объект () объект (мы назовем это Self.False).Как использовать эту переменную экземпляра в качестве значения по умолчанию для аргумента ключевого слова?

class Test:
    def __init__(self):
        self.FALSE=object();
    def Tester(self, key=self.FALSE):
        pass;
.

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

Есть ли способ сделать это?У меня нет ужасных нужд, прямо сейчас, но было бы действительно хорошо, если бы я мог сделать это, как-то.Я бы подумал, что вы сможете пропустить что-либо в качестве значения по умолчанию для аргумента ключевых слов.Конечно, должен быть путь.

Это было полезно?

Решение

Первоначально имеют значение по умолчанию RENACODICODECODETAGCODE в качестве key и в функции, если None является key, то вы можете установить значение по умолчанию, что бы вы ни понравились.

def Tester(self, key=None):
    if key is None:
        key = self.FALSE
.

Кроме того, вам не нужны запятые в Python, например, в C / C ++ / Java.

Другие советы

Нет никакого способа, потому что атрибуты экземпляра не существуют, пока экземпляр не будет создан, но методы определены, когда класс создается, прежде чем какие-либо экземпляры существуют.То есть говоря: «Как вы делаете в своем вопросе), что« класс имеет переменную экземпляра »неверно.У класса нет такой вещи;Только экземпляры имеют эту переменную, и только если и когда они созданы.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top