我刚刚开始使用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
答案 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