определение информации вне класса - PullRequest
0 голосов
/ 03 мая 2010

есть ли способ определить значение в классе в части __init__, отправить его в какую-либо переменную вне класса, не вызывая другую функцию в классе?

как

class c:
     def __init__(self, a):
           self.a = a
           b = 4           # do something like this so that outside of class c, 
                           # b is set to 4 automatically for the entire program
                           # when i use class c

     def function(self):
         ...               # whatever. this doesnt matter

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

Ответы [ 3 ]

1 голос
/ 03 мая 2010

Поскольку глобальные значения плохие , попробуйте переменную класса. (Есть ли причина, по которой вы не можете?) Например:

class C(object):
    def __init__(self,a):
        self.a=a
        C.b=4

или, еще лучше:

* +1007 *

global, как предполагает doublep, будет связываться с глобальной переменной модуля. Так как он ограничен пространством имен модуля, это неплохой вариант.

1 голос
/ 03 мая 2010

Я не уверен, что правильно понял вопрос, но попробуйте добавить эту строку в __init__:

global b

До присвоения b Я имею в виду. Как и в первой строке функции.

0 голосов
/ 03 мая 2010

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

...