从类到类的Python方法调用

Python method call from class to class

我正在学习python,我对从一个类调用到另一个类的语法感到困惑。我做了很多搜索,但没能对工作做出任何回答。我总是会有一些变化,比如:

1
TypeError: __init__() takes exactly 3 arguments (1 given)

帮助非常感谢

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import random
class Position(object):
    '''
    Initializes a position
    '''

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

    def getX(self):
        return self.x

    def getY(self):
        return self.y

class RectangularRoom(object):
    '''
    Limits for valid positions
    '''

    def __init__(self, width, height):
        self.width = width
        self.height = height

    def getRandomPosition(self):
        '''
        Return a random position
        inside the limits
        '''
       
        rX = random.randrange(0, self.width)
        rY = random.randrange(0, self.height)

        pos = Position(self, rX, rY)
        # how do I instantiate Position with rX, rY?

room = RectangularRoom()
room.getRandomPosition()


您不需要传递self——这是新创建的实例,由python自动提供。

1
pos = Position(rX, rY)

注意,这里的错误发生在这一行,但是:

1
room = RectangularRoom()

这方面的问题是你没有给widthheight


也许前面这些问题的答案可以帮助您理解为什么Python决定在方法上添加显式的特殊第一个参数:

  • 自我的目的是什么?
  • 为什么需要在Python方法中明确地拥有"自我"参数?
  • Python——为什么在课堂上使用"自我"?

错误消息可能有点神秘,但一旦您看到它一次或两次,您就知道要检查什么:

  • 是否忘记在方法上定义self/cls第一个参数?
  • 是否传递所有必需的方法参数?(第一个不算数)
  • 那些期望/给定的数字帮助很大。