python - 调用类内部的函数来设置列表的元素

标签 python list class methods call

我正在尝试实现我的第一个类,部分原因是为了打破建模和解决我遇到的数学问题。我认为我的问题与类(class)无关,但是...?

错误一直告诉我:“NameError: global name 'corner2' is not defined”

我尝试移动函数调用,但它仍然无法识别它,所以我将它放回到我的init 函数的列表声明中。

这是我的代码:

class RotatedRectangle(object):

def corner1(a,b):
    a/=2
    b/=2
    x=(a-b)*math.sin(math.pi/4)
    y=(a+b)*math.sin(math.pi/4)
    return (x,y)

def corner2(a,b):
    a/=-2
    b/=2
    x=(a-b)*math.sin(math.pi/4)
    y=(a+b)*math.sin(math.pi/4)
    return (x,y)

def corner3(a,b):
    a/=-2
    b/=-2
    x=(a-b)*math.sin(math.pi/4)
    y=(a+b)*math.sin(math.pi/4)
    return (x,y)

def corner4(a,b):
    a/=2
    b/=2
    x=(a-b)*math.sin(math.pi/4)
    y=(a+b)*math.sin(math.pi/4)
    return (x,y)

def __init__(self, a, b,):
        """Return a Rotated rectangle object whose name is a function of a and b."""
        self.name = str(a) + "," + str(b) + "-rectangle"
        self.corners = [corner1(a,b), corner2(a,b), corner3(a,b), corner4(a,b)]



"""A rectangle with sides equal to even integers a and b is drawn on the          Cartesian plane.Its center (the intersection point of its diagonals) coincides with the point (0, 0),but the sides of the rectangle are not parallel to the axes; instead, they are forming 45 degree angles with the axes.

How many points with integer coordinates are located inside the given   rectangle (including on its sides)? """

最佳答案

在 Python 中为类定义方法时,第一个参数通常设置为“self”。然后,在调用该方法时,在其前面加上 self.

这是工作代码:

import math

class RotatedRectangle(object):

    def corner1(self,a,b):
        a/=2
        b/=2
        x=(a-b)*math.sin(math.pi/4)
        y=(a+b)*math.sin(math.pi/4)
        return (x,y)

    def corner2(self,a,b):
        a/=-2
        b/=2
        x=(a-b)*math.sin(math.pi/4)
        y=(a+b)*math.sin(math.pi/4)
        return (x,y)

    def corner3(self,a,b):
        a/=-2
        b/=-2
        x=(a-b)*math.sin(math.pi/4)
        y=(a+b)*math.sin(math.pi/4)
        return (x,y)

    def corner4(self,a,b):
        a/=2
        b/=2
        x=(a-b)*math.sin(math.pi/4)
        y=(a+b)*math.sin(math.pi/4)
        return (x,y)

    def __init__(self, a, b,):
            """Return a Rotated rectangle object whose name is a function of a and b."""
            self.name = str(a) + "," + str(b) + "-rectangle"
            self.corners = [self.corner1(a,b), self.corner2(a,b), self.corner3(a,b), self.corner4(a,b)]

关于python - 调用类内部的函数来设置列表的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44915037/

相关文章:

从自身继承的Python类?这是如何运作的?

regex - 如何使用 strsplit() 访问 R 列表中的元素?

java - 你能从类文件创建java文件吗?反编译

python - 蜘蛛 (Python) : collapse blocks of code

python - 如何将每一行除以该行的特定列值?

python - 如何将字符串转换为列表?

java - 如何编写通用方法来查找最大元素并调用该方法?

c++ - 重载运算符 < 包含类对象

java - 在子类构造函数中调用 getClass() 总是安全的吗?

python - 阅读文档 : Distutils2 error during installation