将一个类作为参数传递给另一个类

时间:2019-10-24 12:33:48

标签: python class

我刚刚开始使用Python并开始学习有关类的知识。我想知道是否可以将一个类作为参数传递给另一个类。 我创建了2个类-Point类和Circle类。 我希望Circle取一个坐标为x和y且半径为点的点。

class Point:

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

#  Takes a Point with coordonates x,y as center, and a radius
class Circle:

    def __init__(self, Point, radius):
        self.Point = Point
        self.radius = radius

2 个答案:

答案 0 :(得分:3)

您不会传递类名,而是会传递该类的实例

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

class Circle:
    def __init__(self, point, radius):
        self.point = point
        self.radius = radius

这些类的用法将类似于

point = Point(3, 5)
circle = Circle(point, 2)

答案 1 :(得分:0)

在Circle类的__init__方法中,将参数“ point”的变量名与您想要的其Class(类型)混淆。

您可以做的是像这样检查__init__方法中参数“ point”的类型:

class Circle:
    def __init__(self, point, radius):
        if not type(point) == Point:
            raise ValueError('Parameter point must be of type Point.')
        self.point = point
        self.radius = radius

在python中,您不必像在其他编程语言(如Java)中那样,必须在方法标头中指定参数的类型。

但是,如果您使用python 3+,则可以在参数中添加所谓的“类型提示”。如果您的IDE支持,这有助于在运行代码之前发现类型错误。

https://docs.python.org/3/library/typing.html

您可以像这样“提示”您的参数“ point”:

class Circle:
    def __init__(self, point: Point, radius):
        if not type(point) == Point:
            raise ValueError('Parameter point must be of type Point.')
        self.point = point
        self.radius = radius
相关问题