【发布时间】:2021-04-28 02:53:12
【问题描述】:
我在工厂类静态方法中访问基类属性时遇到问题
class BaseGeometryShape:
"""
Base class for geometry objects
"""
def __init__(self, name):
self.name = name
class ShapeFactory:
@staticmethod
def create_shape(shape: str, params: List[str]):
#todo
def get_info(shape: str, params: List[str]):
shape = ShapeFactory.create_shape(shape, params)
info = shape.name + '\n'
return info
我假设我必须在 ShapeFactory 类中使用 BaseGeometryShape 类,因为 get_info() 函数中有 shape.name 行。希望有人知道这件事。谢谢。
【问题讨论】:
-
您实际上并没有从
BaseGeometryShape继承。此外,您将无法从静态方法访问属性,因为根据定义,它无权访问实例 -
那么我在哪里可以获得 shape.name?我必须建立新的财产?
-
在获取或设置属性之前,您需要一个形状对象。你认为你在哪里创建一个形状对象? (专业提示:无处)我的建议是完成 ShapeFactory create_shape 方法,如果有任何问题,请与我们联系。
-
您也无法从静态方法访问与类有关的任何内容,您需要使用类方法或常规方法