gpt4 book ai didi

Python:多个单参数构造函数

转载 作者:行者123 更新时间:2023-11-28 20:01:50 24 4
gpt4 key购买 nike

我有一个 Game 类,它有一个 Board 对象字段。我目前通过传入有关游戏的字符串编码信息并制作 Board 对象来制作 Game

但是,我现在有一堆 Board 对象,我想创建一个直接接受 Board 对象的新构造函数。

这是我当前的构造函数:

def __init__(self, game_string):
self.single_list = game_string.split(",")
self.board = self.parse_game_string(game_string)
self.directions = self.get_all_directions()
self.red_number_of_streaks = self.get_number_of_streaks("R")
self.black_number_of_streaks = self.get_number_of_streaks("B")

但是现在我有了 board 对象,所以我想这样做:

def __init__(self, board):
self.board = board
self.directions = self.get_all_directions()
self.red_number_of_streaks = self.get_number_of_streaks("R")
self.black_number_of_streaks = self.get_number_of_streaks("B")

我不认为 Python 会知道如何区分这两个构造函数。我可以根据参数的类型确定要做什么?像这样的东西:

如果是实例(str): # 通常的构造函数elif isinstance(游戏): # 新的构造函数

有没有更好的办法?

谢谢!

最佳答案

我会这样做:

class Game:
def __init__(self, board):
...

@classmethod
def from_string(cls, game_string):
board = cls.parse_game_string(game_string)
game = cls(board)
game.something = 5

return game

@staticmethod
def parse_game_string(game_string):
...

return Board(...)

Game.from_string 然后会使用接受 的默认 Game 初始化器从字符串构造 Game 的实例Board 对象。

您必须将 Game.parse_game_string 设为静态方法,才能从 Game.from_string 类方法中使用它。

关于Python:多个单参数构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49481743/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com