私は、特定の値または特定のtype
の値しか取り込めないように、クラス属性の検証をしようとしています。私はvalue_type
クラス属性のいずれかの種類のために働くだろうジェネリックmatch_type
機能を実装する方法を見つけようとしている次のようなアプローチPythonで2つのオブジェクトのデータ型を再帰的に比較するには?
class someClass:
value_types = [float, [int], "A", "B"]
def __init__(self, value):
for value_type in self.value_types:
if not self.match_type(value_type, value):
raise ValueError("The value type is invalid")
self.value = value
@staticmethod
def match_type(obj1, obj2):
"""
For obj1 and obj2 recursively compares all the types of containers and
elements inside containers, return False in case of mismatch.
"""
pass
を作ってみました。この背後にある主な動機は、インスタンス属性value
のドメインを制限し、value_type
クラス属性に基づいて渡された値を検証することです。
だけより明確にするために、上記someClass
コンストラクタで許容される値は次のようになり
- 7.5
- [1、9、8、6]
- ""
- "B"エラーが発生する必要のある
値は
ある- [1.2、2.3]
- "C"
- []
あなたの質問の目的は重要ではありませんが、あなたの '__init__'関数にバグがたくさんあります。 –
私に知らせてくれてありがとう、バグを修正しました。 – Satwik