ホームページ > バックエンド開発 > Python チュートリアル > Python で複数のコンストラクターを実装するにはどうすればよいですか?

Python で複数のコンストラクターを実装するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-29 20:35:17
オリジナル
893 人が閲覧しました

How Can I Implement Multiple Constructors in Python?

優雅さと優雅さを備えた Python での複数のコンストラクターの実装

ただし、Python は 1 つのメソッド内で複数の init 関数を明示的にサポートしていない可能性があります。クラスでは、この機能をクリーンな Python クラスで実現する別のアプローチがあります。この問題を説明するために、number_of_holes プロパティを持つ Cheese クラスを考えてみましょう。指定されたホール カウントまたはランダム化された値のいずれかを使用してインスタンスを作成したいと考えています。

デフォルト引数アプローチ

1 つのアプローチには、コンストラクターのデフォルト引数を利用することが含まれます。引数が指定されない場合、穴数はデフォルトの 0 になり、固形チーズを表します。ただし、これでは複数の個別のコンストラクターは許可されません。

class Cheese:
    def __init__(self, num_holes=0):
        if num_holes == 0:
            # Randomize number_of_holes
        else:
            number_of_holes = num_holes
ログイン後にコピー
ファクトリ メソッドのアプローチ

より洗練されたソリューションでは、ファクトリ メソッドとして知られるクラス メソッドを利用します。これらのメソッドは代替コンストラクターとして機能し、さまざまな初期化ロジックを持つ複数の独立した「コンストラクター」を可能にします。

Cheese クラスの場合、さまざまな程度の穴あきのチーズを生成するクラス メソッドを作成できます。

これらのクラス メソッドを使用してインスタンスを作成できるようになりました。
class Cheese(object):
    def __init__(self, num_holes=0):
        self.number_of_holes = num_holes

    @classmethod
    def random(cls):
        return cls(randint(0, 100))

    @classmethod
    def slightly_holey(cls):
        return cls(randint(0, 33))

    @classmethod
    def very_holey(cls):
        return cls(randint(66, 100))
ログイン後にコピー

このアプローチにより、コードの可読性が向上します。柔軟性とPythonの原則への準拠。ファクトリ メソッドは、さまざまな初期化シナリオに対応して、単一クラス内で複数のコンストラクターを定義する明確で組織化された手段を提供します。
gouda = Cheese()  # Creates a solid cheese
emmentaler = Cheese.random()  # Creates a cheese with a random hole count
leerdammer = Cheese.slightly_holey()  # Creates a cheese with a slightly holey structure
ログイン後にコピー

以上がPython で複数のコンストラクターを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート