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

2024-10-17 21:47:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在刚刚开始使用Python并学习类。我想知道我能否把一个类作为参数传递给另一个类。 我创建了两个类-类点和类圆。 我想让圆以坐标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

Tags: self参数returninitdefaswith半径
2条回答

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

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)

在类循环的__init__方法中,您将参数“point”的变量名与其想要的类(类型)混淆。你知道吗

您可以在__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等其他编程语言中那样,为方法头中的参数指定类型。你知道吗

但是,如果您使用python3+,您可以将所谓的“类型暗示”添加到您的参数中。如果IDE支持,这有助于在运行代码之前发现类型错误。你知道吗

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

您可以像这样“键入hint”您的参数“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

相关问题 更多 >