Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.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_Class_If Statement - Fatal编程技术网

Python 类生成的输出中的限制

Python 类生成的输出中的限制,python,python-3.x,class,if-statement,Python,Python 3.x,Class,If Statement,假设我想创建一个类圆圈,如果提供一个值r和一个值delta\u r,它可以计算两个圆圈的环形面积。 之后,使用这个类,我想创建一个包含几对圆的列表 如何在类中添加一个条件,仅当r

假设我想创建一个类圆圈,如果提供一个值r和一个值delta\u r,它可以计算两个圆圈的环形面积。 之后,使用这个类,我想创建一个包含几对圆的列表

如何在类中添加一个条件,仅当r<7时才允许附加值?因此,在示例中,仍然创建列表C,但仅包括r=6之前的结果

import numpy as np
from numpy import pi

class circle:
    def __init__(self, r=1, delta_r=0.1):
        self.r = r
        self.delta_r = delta_r

        self.area1 = pi*r**2
        self.area2 = pi*(r+delta_r)**2
        self.annulus = self.area2 - self.area1

C_range = np.arange(1, 10)
C = []
for n in C_range:
    C.append(circle(n, 0.2))

在下面,您可以找到两种保护圆圈不受错误r影响的方法。
第一个是外部保护-创建圆的代码确保它使用有效的r值。
第二种方法(也是推荐的方法)是让circle保护自己

import numpy as np
from numpy import pi

class Circle:
    def __init__(self, r=1, delta_r=0.1):
        self.r = r
        self.delta_r = delta_r

        self.area1 = pi*r**2
        self.area2 = pi*(r+delta_r)**2
        self.annulus = self.area2 - self.area1

C_range = np.arange(1, 10)
circle_list = [Circle(r, 0.2) for r in np.arange(1, 10) if r < 7]
print(circle_list)

class CirclePlus:
    def __init__(self, r=1, delta_r=0.1):
        if r >= 7:
          raise ValueError(f"Invalid r value {r}")
        else:
          self.r = r
          self.delta_r = delta_r

          self.area1 = pi*r**2
          self.area2 = pi*(r+delta_r)**2
          self.annulus = self.area2 - self.area1
将numpy导入为np
从numpy导入pi
班级圈子:
定义初始值(自,r=1,增量r=0.1):
self.r=r
self.delta\u r=delta\u r
self.area1=pi*r**2
self.area2=pi*(r+delta_r)**2
自环空=自区域2-自区域1
C_范围=np.arange(1,10)
圆形列表=[圆形(r,0.2)表示np.arange(1,10)中的r,如果r<7]
打印(循环列表)
类圆环:
定义初始值(自,r=1,增量r=0.1):
如果r>=7:
raise VALUERROR(f“无效的r值{r}”)
其他:
self.r=r
self.delta\u r=delta\u r
self.area1=pi*r**2
self.area2=pi*(r+delta_r)**2
自环空=自区域2-自区域1

可能会给出
圆圈
一个
最大值
属性?