Передача переменной stati c в класс в качестве аргумента? - PullRequest
0 голосов
/ 09 февраля 2020

Как мне добиться чего-то подобного?

class myClass(static_variable):
    static_var = static_variable

    def __init__(self, x):
        self.x = x + static_var

obj = myClass(static_variable = 3)(x = 5)
#obj.x = 8

[РЕДАКТИРОВАТЬ]
Лучший вопрос был бы: «Как инициализировать переменную класса stati c во время выполнения» ? ', но python интерпретируется, поэтому я не знаю, является ли это лучшим вопросом.

Ответы [ 2 ]

2 голосов
/ 09 февраля 2020

Оператор class оценивается во время выполнения и имеет доступ к своей области действия. Это позволяет инициализировать атрибуты класса ("stati c") из контекста или путем выполнения другого кода.

static_variable = 32

class myClass:
    cvar1 = static_variable  # lookup variable from enclosing scope
    cvar2 = random.random()  # call function to initialise attribute

    def __init__(self, x):
        self.x = x + self.cvar1 + self.cvar2
1 голос
/ 09 февраля 2020

Ваша вторая строка сделает свое дело. Вам не нужно впоследствии назначать его в конструкторе.

class YourClass:
    static_var = 3*6 . # <--- assigns the static variable to a computed value, 18 in this case
    def __init__(self):
        pass

instance = YourClass()
print(instance.static_var)  # <--- this will print 18
print(YourClass.static_var) # <--- this also prints 18
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...