SierpinskiTriangle () принимает ровно 1 аргумент (4 дано) - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь инициализировать sT из импортированного модуля. И получаю ошибку:

sT = SierpinskiTriangle(self.dimensions, 50000, 0.5, vertices)
TypeError: SierpinskiTriangle() takes exactly 1 argument (4 given)

и я не совсем уверен, почему или что я сделал не так.

sT = SierpinskiTriangle(self.dimensions, 50000, 0.5, vertices)

И я импортировал это из другого файла:

 class Fractal(Canvas, Point):

    def __init__(self, dimensions, num_points, ratio, vertices):
        self.dimensions = dimensions
        self.num_points = num_points
        self.r = ratio
        self.vertices = vertices

    def frac_x(self, r):
        return int((self.dimensions["max_x"] - \
         self.dimensions["min_x"]) * r) + \
         self.dimensions["min_x"]

    def frac_y(self, r):
        return int((self.dimensions["max_y"] - \
         self.dimensions["min_y"]) * r) + \
         self.dimensions["min_y"]

def SierpinskiTriangle(Fractal):

    def __init__(self, dimensions, num_points, ratio, vertices):
        Fractal.__init__(self, dimensions, num_points, ratio, vertices)

Правка, вот класс Point:

class Point(object):

    def __init__(self, x = 0.0, y = 0.0):
        self.x = float(x)
        self.y = float(y)

    @property
    def x(self):
        return self._x

    @x.setter
    def x(self, value):
        self._x = value

    @property
    def y(self):
        return self._y
    @y.setter
    def y(self, value):
        self._y = value

    def dist(self, secondPoint):
        #get the self x values from self.x and the values
        #of the seecond point from secondPoint.x
        #same with y
        dist = math.sqrt(((self.x - secondPoint.x)**2)+ ((self.y - secondPoint.y)**2))
        return dist

    def midpt(self, secondPoint):
        #same as the dist
        midpointx = (self.x + secondPoint.x)/2
        midpointy = (self.y + secondPoint.y)/2
        midpoint = Point(midpointx,midpointy)
        return midpoint

    def __str__(self):
        return "({},{})".format(self.x,self.y)

Надеюсь, это также помогает прояснить ситуацию. У меня нет класса Canvas, потому что он является частью Tkinter.

1 Ответ

0 голосов
/ 02 мая 2019

Вы использовали def вместо class для SierpinskiTriangle, что означает, что он принимает только один аргумент (Fractal) вместо обработки Fractal в качестве суперкласса.

Измените это на класс, как показано ниже, и потребуется 4 аргумента.

class SierpinskiTriangle(Fractal):

    def __init__(self, dimensions, num_points, ratio, vertices):
        Fractal.__init__(self, dimensions, num_points, ratio, vertices)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...