1. ホーム
  2. python

[解決済み] Rectangleクラスの作成【終了しました

2022-02-18 11:24:36

質問

私は本当にクラスをあまり理解していないので、何か手助けがあれば助かります。

Rectangle クラスは、以下のプライベートデータ属性を持つ必要があります。

  • __length
  • __width

Rectangleクラスには __init__ メソッドで、これらの属性を作成し、1に初期化します。

  • set_length - このメソッドは __length フィールド

  • set_width - このメソッドは __width フィールド

  • get_length - このメソッドは __length フィールド

  • get_width - このメソッドは __width フィールド

  • get_area - このメソッドは、Rectangleの面積を返します。

  • __str__ - このメソッドは、オブジェクトの状態を返します。

class Rectangle:

  def __init__(self):
      self.set_length = 1
      self.set_width = 1
      self.get_length = 1
      self.get_width = 1
      self.get_area = 1

def get_area(self):
    self.get_area = self.get_width * self.get_length
    return self.get_area


def main():

  my_rect = Rectangle()

  my_rect.set_length(4)
  my_rect.set_width(2)

  print('The length is',my_rect.get_length())
  print('The width is', my_rect.get_width())

  print('The area is',my_rect.get_area())
  print(my_rect)

  input('press enter to continue')

解決方法は?

には、いくつかの問題があります。 class . 以下のコメントをご覧ください。

class Rectangle:
    # Init function
    def __init__(self):
        # The only members are length and width
        self.length = 1
        self.width = 1

    # Setters
    def set_width(self, width):
        self.width = width

    def set_length(self, length):
        self.length = length

    # Getters
    def get_width(self):
        return self.width

    def get_length(self):
        return self.length

    def get_area(self):
        return self.length * self.width

    # String representation
    def __str__(self):
        return 'length = {}, width = {}'.format(self.length, self.width)

クラスのテスト

>>> a = Rectangle()
>>> a.set_width(3)
>>> a.set_length(5)
>>> a.get_width()
3
>>> a.get_length()
5
>>> a.get_area()
15
>>> print(a)
length = 5, width = 3

他の人も指摘しているように、Pythonではメンバー変数はすべてパブリックなので、セッターとゲッターは余計なものです。あなたの課題ではこれらのメソッドが必要なのでしょうが、将来的にはその手間を省いて直接メンバにアクセスできるようになることを知っておいてください。

>>> a.length       # Instead of the getter
5
>>> a.length = 2   # Instead of the setter
>>> a.length
2