Я пытаюсь вычислить радиусоподобную величину из 3 списков, содержащих декартовы координаты x, y и z. Ниже приведен мой минимальный пример кода для воспроизведения проблемы, с которой я столкнулся; Дочерний класс вычисляет величину радиуса, но возвращает нулевое значение. В чем причина этого, и как это можно исправить?
Скрипт:
# -*- coding: utf-8 -*-
from dataclasses import dataclass, field
from typing import List
@dataclass
class LoadHalo:
x: List = field(default_factory=list)
y: List = field(default_factory=list)
z: List = field(default_factory=list)
def __post_init__(self):
self.x = [1, 2, 3]
self.y = [1, 3, 5]
self.z = [1, 4, 7]
@dataclass
class BinHalo(LoadHalo):
r: List = field(default_factory=list)
def __post_init__(self):
self.r = self.modulus(self.x, self.y, self.z)
def modulus(self, *args):
"""Modulus of vector of arbitrary size."""
return sum([i ** 2 for containers in args for i in containers]) ** .5
halo = BinHalo()
print(f"halo.x: {halo.x}")
print(f"halo.r: {halo.r}")
Что выводит следующие значения для x и r:
halo.x: []
halo.r: 0.0
super().__post_init__()
передself.r = self.modulus(self.x, self.y, self.z)
- person eyllanesc   schedule 03.12.2019