做网站架构需要什么工具,破解空间网站,网络营销策略分析方法,单仁做的网站我真的不太懂课程#xff0c;任何帮助都会很好。
矩形类应具有以下私有数据属性#xff1a;
__length
__width
Rectangle类应该有一个创建这些属性并将其初始化为1的__init__方法。它还应具有以下方法#xff1a;
set_length—此方法为__length字段赋值。
set_width—此方法…我真的不太懂课程任何帮助都会很好。
矩形类应具有以下私有数据属性
__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, width1, height1):
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
50r.width 100r.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):
returnThis is class Rectangle
def set_length(self,len1.0): #len1 -- default value
self.__length len
def set_width(self,wid1.0): #wid1 -- 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)
printThe length is, my_rect.get_length()
printThe width is , my_rect.get_width()
printThe 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()
3a.get_length()
5a.get_area()
15print(a)
length 5, width 3
正如其他人所指出的在Python中setter和getter是多余的因为所有成员变量都是公共的。我知道这些方法对你的任务是必需的但是在将来你要知道你可以省去麻烦直接访问成员。
1
2
3
4
5 a.length # Instead of the getter
5a.length 2 # Instead of the settera.length
2