Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何直接通过方法而不是通过实例为变量赋值_Python_Python 3.x - Fatal编程技术网

Python 如何直接通过方法而不是通过实例为变量赋值

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

在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 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