В библиотеке питона pytides, я наткнулся на странный метод инициализировать класс (Tide класс и его initialization). я Приводимый ниже упрощенной версии кода:Странная инициализации класса в Python
import numpy as np
class Foo(object):
def __init__(self,x,y):
self.x = x
self.y = y
class Foobar(object):
dtype = np.dtype([('fooObj', object),
('A', float),
('B', float)])
def __init__(self,model):
'''model: an ndarray of type Foobar.dtype '''
self.model = model
# initialize a Foobar object
myFoos = [Foo(4,3),Foo(4,9),Foo(0,2)]
A = [2,3,4]
B = [8,9,0]
model = np.zeros(len(myFoos), dtype = Foobar.dtype)
model['fooObj'] = myFoos #what is that?!?
model['A'] = A
model['B'] = B
myFoobar = Foobar(model=model)
Как я понимаю, переменная DTYPE в Foobar является глобальной переменной, но я не понимаю, какой смысл иметь его. Это просто здесь, чтобы обеспечить удобный способ инициализации Foobar? Кроме того, классу Foobar нужен массив Foobar.dtype при построении, это не своего рода циклический вызов (который должен произойти сбой)?
Переменная 'dtype' в' Foobar' - это _not_ глобальная переменная, это атрибут класса, который разделяется всеми экземплярами класса Foobar. –