Python 如何直接通过方法而不是通过实例为变量赋值
在Python3中,使用“类”计算矩形面积的标准方法是通过如下方式Python 如何直接通过方法而不是通过实例为变量赋值,python,python-3.x,Python,Python 3.x,在Python3中,使用“类”计算矩形面积的标准方法是通过如下方式 class Rectangles: def __init__(self,length,width): self.a = length self.b = width def Area(self): return self.a*self.b example = Rectangles(2,3) print('Area of the specific e
class Rectangles:
def __init__(self,length,width):
self.a = length
self.b = width
def Area(self):
return self.a*self.b
example = Rectangles(2,3)
print('Area of the specific example=',example.Area())
显然,上面的代码将生成等于6的答案打印
我的问题是:如何将长度=2和宽度=3的赋值保留到最后一行。换句话说,我希望避免使用固定的长度和宽度“预先定义”该示例,以便我可以直接将长度和宽度指定给Area(),这将导致直接计算面积。下面是我的尝试性方法(下面的代码只显示了我的意图,它在Python中不起作用,这就是为什么我想知道一种使它起作用的方法…)
这样,我就不必为计算它们的面积定义一堆固定的实例(例如,示例(4,7)、示例(2,3)等等)。有人能帮我解决这个问题吗
提前谢谢 我不明白您为什么需要在这里使用面向对象的方法。如果要在
矩形下组织面积函数,请使用静态方法:
class Rectangles:
@staticmethod
def Area(length, width):
return length * width
example = Rectangles()
example.Area(2,3)
example.Area(4,7)
# OR
Rectangles.Area(2,3)
Rectangles.Area(4,7)
但是,我不确定您为什么需要这个。如果您想实例化一个矩形而不提供参数,您可以在类构造函数中定义默认值:
class Rectangles:
def __init__(self, length=0, width=0):
self.a = length
self.b = width
要通过Area()
方法定义length
和width
值,只需将它们添加为参数:
def Area(self, length, width):
self.a = length
self.b = width
return self.a*self.b
你的“试探性方法”行不通。您已经为矩形
类的初始化方法\uuuu init\uuuu()
提供了两个参数,但是在创建实例时,您没有提供这两个必需的位置参数:“长度”和“宽度”。这将抛出一个错误
我认为您正在尝试获得类似以下代码的内容
代码
类矩形:
定义初始化(自):
通行证#留空以备将来使用
@静力学方法
def区域(自身、长度、宽度):
返回长度*宽度
示例=矩形()
示例:面积(2,3)
示例:面积(4,7)
那么,您需要的只是一个函数,不需要有一个类……实际上,它已经定义为operator import mul中的。如果您不需要任何内部状态,您可以使用函数。或者,您可以使用.area
方法将这些值作为参数。。尽管这没有多大意义。如果你不需要任何内部状态,为什么这个矩形必须是一个类?是的,我知道这个函数可以轻松完美地工作。但真的没有办法让课堂教学法奏效吗?我这样做是为了练习课堂教学法。你可以,但你应该学到的是,你不需要上课。谢谢,伊兹。我只是有一个相关的快速问题:如果我在所有矩形中固定长度=2如何?有没有办法让“示例=矩形(2)”“示例.区域(3)”只涉及宽度?@user31899您想要的是可能的,但会导致难看的代码。您不应该将Area
同时用作实例和静态函数。我建议重构。
def Area(self, length, width):
self.a = length
self.b = width
return self.a*self.b