如何在同一对象内的函数中使用对象类型作为参数?

问题描述 投票:0回答:1

也许这是不可能的,我需要重新规划我的方法,但很好奇我是否缺少正确的语法。我学习了如何在函数中声明参数的数据类型,并且可以在对象外部使用对象类型。如何在对象内部使用它?

下面的对象类被精简以仅显示我的问题。我确实看到了如何将其用作发送 int,但这只是剥离的示例。我还有更多要做的事情,涉及传递一个对象。带有尝试攻击的行,“piece_to_attack: Piece”中的“Piece”显示为未解析的引用,并且“piece_to_attack.defense”中的“.defense”不会在 PyCharm 中自动完成。我可以在对象外部的 test_param 函数中使用 Piece 类型,但是我不能使用 self.参考,因为它显然不是课程的一部分。

class Piece():

    def __init__(self, row_start: int, col_start: int, piece_type: int, piece_team: int):
        self.type = piece_type
        self.attack_strength = 10
        self.defense = 5
        self.pos_row = row_start
        self.pos_col = col_start

    def attempt_attack(self, rand_roll: int, piece_to_attack: Piece):
        return self.attack_strength - piece_to_attack.defense - rand_roll <= 0

def test_param(my_piece: Piece):
    return my_piece.defense - 10 <= 0
python object oop parameters
1个回答
0
投票

您可以尝试“前向声明”

class Piece: pass

class Piece():

    def __init__(self, row_start: int, col_start: int, piece_type: int, piece_team: int):
        self.type = piece_type
        self.attack_strength = 10
        self.defense = 5
        self.pos_row = row_start
        self.pos_col = col_start

    def attempt_attack(self, rand_roll: int, piece_to_attack: Piece):
        return self.attack_strength - piece_to_attack.defense - rand_roll <= 0

def test_param(my_piece: Piece):
    return my_piece.defense - 10 <= 0
© www.soinside.com 2019 - 2024. All rights reserved.