それは私がOOPの基礎について混乱していても1は、Pythonでこれを実現する方法私には不明だ:Python OOP:フラグパラメータを使ってメソッドにアクセスする方法は?
だが、私はShape
クラスを作成し、例としてこれを使用するとしましょう。私の場合は
class Shape:
def __init__(self, x, y):
self.x = x
self.y = y
def area(self):
return self.x * self.y
def perimeter(self):
return 2 * self.x + 2 * self.y
def scaleSize(self,scale):
self.x = self.x * scale
self.y = self.y * scale
、私は2種類のみ、file_typeA
とfile_typeB
があることにより、ファイルを入力クラスを作成する必要があります。ユーザーにとっては、Type A
のクラスとType B
のクラスを使用するのは非常に面倒です。
## use case for an a "read in file name" class `filename`
foo = filename(path = "path/to/file.txt", file_type = "TypeA")
私の質問はどのように私はフラグfile_type="TypeA"
で初期化ファイルの「タイプA」メソッドを制限し、フラグfile_type = "TypeB"
で初期化されたファイルのための方法を制限するか、でしょうか?
もう一度Shape
クラスを試してみましょう。この2つのタイプはSquare
とTriangle
です。どのように私はそれが、このようなタイプのShape
のために使用することはできませんarea
方法==「タイプB」ことを作成しますか、そのようなクラスについては
class Shape:
def __init__(self, x, y, type):
self.x = x
self.y = y
self.type = type
if type == "Square":
def area(self):
return self.x * self.y
def perimeter(self):
return 2 * self.x + 2 * self.y
def scaleSize(self,scale):
self.x = self.x * scale
self.y = self.y * scale
elif type == "Triangle":
def hooray(self):
print("HOORAY! It's hip to be a triangle!")
else:
print("'type' must be either Circle or Triangle")
## example Class instantiation
bar = Shape(2, 3, type="Square")
:これをコーディングする間違ったの方法は、このようなものでしょうか?私はあなたが母親のクラスを定義する必要があると思う
なぜあなたのシェイプクラスを継承しないのですか?はい、あなたはより多くのOOPを覚える必要があります。ファクトリメソッドを使用して、適切なクラスをインスタンス化することもできます。 –
_私の場合は、file'_typeA'と '_typeB'_という2つの型しか持たないファイルを入力するClassを作成する必要があります。ここで何を言おうとしていますか?特に**あなたが意味することを説明してください** – smac89
あなたの形の例では 'class Square'と' class Triangle'を行い、正方形が必要なら 'Shape(type = 'square') 'ではなく' Square() 'です。 – deceze