擅长:python、mysql、java
<p>您定义了一个<code>Rectangle</code>类,其初始值设定项方法需要两个参数:</p>
<pre><code>class Rectangle:
def __init__(self, length, width):
</code></pre>
<p>然而,您试图在不传递这些参数的情况下创建一个<em>:</p>
^{pr2}$
<p>输入长度和宽度:</p>
<pre><code>my_rect = Rectangle(length, width)
</code></pre>
<p>下一个问题是<code>area</code>没有定义,您可能需要计算:</p>
<pre><code>class Rectangle:
def __init__(self, length, width):
self.__length = length
self.__width = width
self.get_area(length, width)
</code></pre>
<p>关于设计注意事项:在Python中,通常不会使用这样的“private”变量;只需使用普通属性即可:</p>
<pre><code>class Rectangle:
def __init__(self, length, width):
self.length = length
self.width = width
@property
def area(self):
return self.length * self.width
</code></pre>
<p>并根据需要直接在实例上获取或设置这些属性:</p>
<pre><code>print('The length is', my_rect.length)
print('The width is', my_rect.width)
print('The area is', my_rect.area)
</code></pre>
<p>以双下划线(<code>__name</code>)开头的属性旨在避免子类意外地重新定义它们;其目的是防止这些属性被删除,因为它们对当前类的内部工作至关重要。事实上,他们的名字被弄乱了,因此不太容易接近,这并不是说他们是私人的,只是更难联系到他们。不管你做什么,不要像在Java中那样把它们误认为私有名称。在</p>