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非常糟糕。我建议找一个更好的班级。或者,如果你需要这样做的话,在老师教什么之前,找一个你可以实际学习的在线教程或课堂,这样你就可以在不期望从中学习任何东西的情况下完成作业。

对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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527540.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux epel7安装,在CentOS6.x或CentOS7.x上安装EPEL Repo,Extra Packages for Enterprise Linux (EPEL)...

在CentOS6.x或CentOS7.x上安装EPEL Repo,Extra Packages for Enterprise Linux (EPEL)Error: Cannot retrieve metalink for repository: epel. Please verify its path and try againReporepository,资源库,源的意思。RHEL EPEL(Extra Packages for Ent…

sparkstreaming 读取mysql_第十篇|SparkStreaming手动维护Kafka Offset的几种方式

Spark Streaming No Receivers 方式的createDirectStream 方法不使用接收器,而是创建输入流直接从Kafka 集群节点拉取消息。输入流保证每个消息从Kafka 集群拉取以后只完全转换一次,保证语义一致性。但是当作业发生故障或重启时,要保障从当前…

c语言程序设计题2015,2015年荐C语言程序设计等级考试习题汇编.doc

C语言程序设计等级考试习题汇编1、设计程序:数列第1项为81,此后各项均为它前1项的正平方根,统计该数列前30项之和,并以格式"%.3f"写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p; fl…

用了python之后笔记本卡了_应用

想参与时下最热门的话题讨论吗?看过这些2012最炙手可热的电影电视剧吗?想了解最新职场信息,轻松晋升职场达人么?……本应用为你精选了5个分类(经济、教育、娱乐、生活、科技)共150篇妙趣横生的时尚双语新闻, 7天时间完…

c语言tmplink,为了便于阅读,偿试把BLHeli的汇编源程序改成C语言格式

只是为了方便阅读和理解,所以未做详细的正确性检查。因为能力所限,程度中还是保留了很多跳转(goto)语句。主循环已经完成,发上来供大家参考int main(void){if(0 Prepare_Lock_Or_Fuse_Read() & 0x80){while(1);}Disable_Watchdog();Init…

anaconda 安装pytorch_conda上安装PyTorch

conda上安装PyTorch这里的安装系统:Windows系统第一步,打开Anaconda Prompt第二步,为pytorch创建一个环境:conda create -n pytorch python3.8(这里的pytorch是环境的名称,python3.8表示安装的是3.8版本的p…

c语言 自动化编译环境,《C编程.开始C》3.编译基础

在介绍了C编程的基本概念之后,我们现在可以简要地讨论编译过程。像任何编程语言一样,C本身对于微处理器来说是完全不可理解的。它的目的是提供一种用于人类是提供一种能够很容易地转换成机器代码指令以直观的方式是理解到微处理器。该编译器是什么翻译我…

curd什么意思中文_查英英字典:What a shame是什么意思?

查英英字典:What a shame是什么意思?“互联网”时代学习英语有两种“学习方法”:简单粗暴学法和自己动手丰衣足食法。一、简单粗暴法:直接问老师要“中文答案”在过去非互联网时代,“老师”往往是提供“答案”的唯一渠…

一维搜索进退法c语言程序,基于c语言黄金分割法优化设计.doc

基于c语言黄金分割法优化设计基于c语言黄金分割法优化设计【摘 要】 机械优化设计是适应生产现代化要求发展起来的一门崭新的学科。它是在现代机械设计理论的基础上提出的一种更科学的设计方法,它可使机械产品的设计质量达到更高的要求。基于黄金分割法提出的利用C语…

c++读出像素矩阵_Python传numpy矩阵调c++(求3D图像连通区域)

Python有很多种调c的方法,有的复杂有的简单,有时使用的时候反而不知道到底该用哪一种比较好,其实没有最好的方法,只有适合不适合自己。本文从我所遇到的问题说起,然后讲述另一种比较简单的python调c并且传参numpy矩阵的…

android四大组件的作用简书,Android四大组件是什么

Android四大组件是:活动、服务、广播接收器、内容提供商。它们的英文名称是ACTIVITY、SERVICE、BroadcastReceiver、Content Provider。四个组件分别起到不同的作用,相互配合才能确保安卓系统的正常运行,因此是缺一不可的。Android四大组件及…

python 获取文件大小_第41p,超级重要,Python中的os库

大家好,我是杨数Tos,这是《从零基础到大神》系列课程的第41篇文章,第二阶段的课程:Python基础知识:Python内置库之os库的使用。学习本课程,建议先看一遍:【计算机基础知识】课程。os模块是与操作…

android 多个textview,Android:多个textview像单个文本

需要格式化几个textview像一个又一个独特的文本块,有没有办法实现这个?Android:多个textview像单个文本这样__________________________| || || aaaaaa bbbbbbbbbbbbbbb || bbbbbbbbbb cccccc dddd || ddddddddddddd. || |我不能把TextView的…

惠普打印机节能环保认证证书_低成本高效办公 苏宁惠普超品日这几款打印机了解下!...

【PConline 导购】说到打印机,很多朋友会想到公司那台不停运转的打印机。其实,伴随着近几年来打印机技术的成熟,其打印成本也一降再降,这就让有打印的需求的中下型企业,甚至个人,都会去选购一款合适的打印产…

vm客户机隔离不能选_开汽车美容店,这些位置绝对不能选,会让你门可罗雀,生意惨淡...

之前的文章里,讲了一些开汽车美容店选址的要领,今天,来聊聊一些更加细致的选址要素,让你避免错误选址而导致生意不佳。门面宽度小于2.5米的不要选一辆普通汽车的宽度在1.8米-2米之间,加上两侧后视镜各20公分左右&#…

Android app 标签,android 获取APP的唯一标识applicationId的实例

使用getIdentifier()方法可以方便的获各应用包下的指定资源ID。方式一int indentify getResources().getIdentifier(“com.test.demo:drawable/icon”,null,null);第一个参数格式是:包名 : 资源文件夹名 / 资源名;是这种格式 然后其他的可以为null方式…

markdown格式_第1篇:如何将Markdown笔记转入ANKI复习? | 学习骇客

用技术和心理学改善学习 第128次摘要:将日常使用的Markdown笔记软件与复习工具ANKI结合起来,于ANKI用户而言可以简化学习过程,于一般的学习者而言可以解决笔记“记而不学”的问题。本文摘选自视频课程《复习的技术,跟LEO学ANKI》(…

android手机无分区无法刷机,手机刷死了别说没提醒!安卓设备刷机前必看

大家好,清明节已经过去了,上班的感觉是不是很不爽?但是告诉大家一个好消息是:本周只需要煎熬三天,大家就又可以休息了!听了这个消息,不爽的心情是不是稍微好一些了?本期的微信和大家…

python基础编程题、积分面积_Python基础编程题100列目录

实例001:数字组合 实例002:“个税计算” 实例003:完全平方数 实例004:这天第几天 实例005:三数排序 实例006:斐波那契数列 实例007:copy 实例008:九九乘法表 实例009:暂停…

mysqlbinlog工具_带你解析MySQL binlog

前言:我们都知道,binlog可以说是MySQL中比较重要的日志了,在日常学习及运维过程中,也经常会遇到。不清楚你对binlog了解多少呢?本篇文章将从binlog作用、binlog相关参数、解析binlog内容三个方面带你了解binlog。1.bin…