from typing import Optional
class TreeNode:
def __init__(self, depth: int):
self.split_pair: Optional[SplitPair] = None
self.left: Optional[TreeNode] = None
self.right: Optional[TreeNode] = None
self.predict: float = 0.0
self.is_leaf: bool = False # Та самая строка
self.depth: int = depth
def __str__(self):
if self.is_leaf:
return f"leaf = {self.predict:.3f}"
return str(self.split_pair)
class SplitPair:
def __init__(self, col_name: str, split_value: float):
self.col_name: str = col_name
self.split_value: float = split_value
def __str__(self):
return f"{self.col_name} > {self.split_value}"
node = TreeNode(1) # Дебаг запускаю тут
print(node)
__str__
, строковое представление объекта, в котором ты описал его логику (в зависимости от значения атрибутов объекта), затем, ты вызываешь print,
который автоматически вызывает __str__
и там происходит ровно то что ты описал, то есть print(экземпляр класса) выведет ровно то, что возвращает __str__,
если он был определен, если нет то стандартно ссылку в памяти на объект экземпляра.