日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python求矩形面积_关于python:创建矩形类

發布時間:2024/9/27 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python求矩形面积_关于python:创建矩形类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我真的不太懂課程,任何幫助都會很好。

矩形類應具有以下私有數據屬性:

__length

__width

Rectangle類應該有一個創建這些屬性并將其初始化為1的__init__方法。它還應具有以下方法:

set_length—此方法為__length字段賦值。

set_width—此方法為__width字段賦值。

get_length—此方法返回__length字段的值。

get_width—此方法返回__width字段的值。

get_area—此方法返回矩形的面積

__str__—此方法返回對象的狀態

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28class 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')

你的問題是…?

無論誰教這個課程,都不是很擅長Python,而是要教你如何編寫Java代碼,而Python非常糟糕。我建議找一個更好的班級?;蛘?#xff0c;如果你需要這樣做的話,在老師教什么之前,找一個你可以實際學習的在線教程或課堂,這樣你就可以在不期望從中學習任何東西的情況下完成作業。

對AbnNet的完全正確的注釋做一點說明:Python不是Java,而你的指導者似乎不理解這一點,因此教給你壞的Python實踐。尤其是關于__的"dunder"變量,它們在Python中有特殊的含義,不適用于其他語言。有關dunder變量和python中的"privacy"的更多詳細信息,請參閱這個和這個。

python不限制對私有數據屬性的訪問,因此您很少像使用更嚴格的語言那樣編寫"getter"和"setter"(我們都是同意的成年人)。

除非它是供內部使用的(將來可能會更改的實現細節),否則您只需將該屬性向世界公開—因此更慣用的矩形將是:

1

2

3

4

5

6

7class Rectangle(object):

def __init__(self, width=1, height=1):

self.width = width

self.height = height

@property

def area(self):

return self.width * self.height

然后:

1

2

3

4

5

6>>> r = Rectangle(5, 10)

>>> r.area

50

>>> r.width = 100

>>> r.area

1000

當然,您可以使用getter和setter編寫rectancle類,但只有當您想驗證或轉換輸入時才這樣做-然后您可能想了解有關@property decorator的更多信息。

首先,這個任務是一個非常糟糕的主意。在Python中,您幾乎不需要"private"屬性、getter和setter函數,而任何教您這樣做的人都會將您引入歧途。

但是,如果你只是想通過任務,而不是學習如何編寫合適的Python代碼,下面是你的方法。

首先,要創建一個名為__length的屬性,只需為其分配與任何其他屬性相同的屬性:

1

2def __init__(self):

self.__length = 1

現在,要為該屬性編寫getter和setter,請執行相同的操作:

1

2

3

4

5def get_length(self):

return self.__length

def set_length(self, length):

self.__length = length

現在,get_area有點棘手,因為你沒有一個__area可以得到。(這是一個愚蠢的想法,因為它看起來像一個getter函數,即使它不是…)但是你知道如何計算一個矩形的面積:它只是長度乘以寬度,對嗎?

1

2def get_area(self):

return self.__length * self.__width

在整個任務中,__str__方法是唯一的好主意,盡管對于這樣的類,編寫一個沒有__repr__的__str__可能是一個壞主意。不管怎樣,這兩個方法都只是返回一個帶有一些有用對象表示的字符串。str對最終用戶應該是友好的,而repr對程序員(您或使用您的類的人)應該是有用的。例如:

1

2

3

4

5def __str__(self):

return '{} x {} rectangle'.format(self.__length, self.__width)

def __repr__(self):

return '{}({}, {})'.format(type(self).__name__, self.__length, self.__width)

我同意,這項任務的前提很奇怪。我理解他們試圖理解成員和方法的概念,但是他們讓這個類聞起來像C++。有時,這些學術問題以學習為幌子,伴隨著最奇怪的要求。

@賽博:通常情況下,當你看到這樣的任務時,并不是因為他們想表達的觀點。(除非這一點是"該死的管理員讓我在Python教書,我只是花了3年的時間學習如何教JAVA……好吧,我只是把我所有的課程材料從Java翻譯成Python,如果他們抱怨我要燒毀大樓……",如果你真的想教私人變量和吸氣劑。在python中,您首先要教@property(并給出一個最初不是計算的計算getter示例)。

"我只是把我所有的課程材料從Java翻譯成Python"我希望我能說我在工業界也沒有看到這一點:/Fortran代碼被翻譯成C++是我必須處理的。你可以有超過8個字符的變量名,使用實際的類,使用STL等。有些人是很好的程序員,不明白語法翻譯不等于成語翻譯。

@ Cyt:是的,C++中的FORTRAN代碼有時比Python中的Java代碼更煩人,因為最終在整個地方都會出現分段錯誤和漏洞,如果您只是編寫了習慣性C++,那么在運行時可以很容易地完成在運行時做的事情,更不用說性能問題了。我已經很久沒有處理過C++代碼了,很抱歉…

如果沒有集合和獲取函數,您可以做得非常好,并且在使用損壞的變量(如變量名)時應該更加小心,但是這里有一個不太出色的代碼來滿足您的需求。希望有幫助。

ps:python 2.7格式的打印語句。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38class Rectangle():

def __init__(self):

self.__length = 1.0

self.__width = 1.0

def __str__(self):

return"This is class Rectangle"

def set_length(self,len=1.0): #len=1 --> default value

self.__length = len

def set_width(self,wid=1.0): #wid=1 --> default value

self.__width = wid

def get_length(self):

return self.__length

def get_width(self):

return self.__width

def get_area(self):

return self.get_width() * self.get_length()

if __name__ == '__main__':

my_rect = Rectangle()

my_rect.set_length(4.0)

my_rect.set_width(2.0)

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

raw_input('Press enter to continue')

你的class有一些問題。見以下評論

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27class 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)

測試課程

1

2

3

4

5

6

7

8

9

10

11>>> 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中,setter和getter是多余的,因為所有成員變量都是公共的。我知道這些方法對你的任務是必需的,但是在將來,你要知道你可以省去麻煩,直接訪問成員。

1

2

3

4

5>>> a.length # Instead of the getter

5

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

>>> a.length

2

總結

以上是生活随笔為你收集整理的python求矩形面积_关于python:创建矩形类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。