Есть ли способ сделать предварительное объявление классов в python? - PullRequest
0 голосов
/ 28 марта 2020

Я работаю над механизмом 3D-рендеринга, использующим только стандартные библиотеки и tkinter, но я столкнулся с трудностью, пытаясь определить функцию, которая объединяет класс, частью которого она является, с другим экземпляром класса.

Код

class VertexCloud:

    def __init__(self, seed: Vertex = Vertex(Point(0, 0, 0), Point(0, 0, 0))):
        vertecies.append(seed)

#...

    #merge two vertex clouds
    def merge(vc: VertexCloud = VertexCloud(Vertex(Point(0, 0, 0), Point(0, 0, 0)))):
        for vertex in vc.verticies:
            verticies.append(vertex)

возвращает эту ошибку:

Traceback (most recent call last):
...
File"<Path>/ThreeDFamilies.py", line 126, in VertexCloud
    def merge(vc: VertexCloud = VertexCloud(Vertex(Point(0, 0, 0), Point(0, 0, 0)))):
NameError: name 'VertexCloud' is not defined

Мои единственные идеи, как это исправить, - либо заранее объявить класс (предпочтительно), или определить функцию за пределами класса. К сожалению, хотя я владею другими языками, это мой первый крупный проект в python, поэтому я не совсем понимаю, как это будет работать синтаксически.

Любая помощь будет принята с благодарностью!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...