我有一个名为Image
的类class Image(object):
def __init__(self,rgb_img):
self.img_time = time.time()
self.img_colr = rgb_img
我想稍后在这个类上存储更多信息(图像关键点,灰度等),并且相信完全创建一个新类更清楚。但我不知道这方面的最佳做法。继承了我的猜测:
img = Image(rgb_img)
class DetailedImage(object):
def __init__(self, img, kp, grey):
self = img
self.kp = kp
self.grey = grey
但是,这个选项是隐含的。 img参数必须是Image实例并不是很明显。
使用其他类中的实例创建新类的最佳做法是什么? (如果我有一个农民,他训练成为一名战士,我如何将实例化的农民阶级的信息传递给一个单独的战士班?)这是一个好主意吗?
答案 0 :(得分:1)
正如我在评论中所说:分配给self
让我感到畏缩,不要这样做。
除此之外,您还有很多选择如何获得所需。
class DetailedImage(object):
def __init__(self, img):
"""
:param Image img: Internal image
"""
self.img = img
在这种情况下,我使用sphinx格式的docstrings指定了参数类型。
Python继承(甚至是多继承)是有用的,并且比其他语言更好。我会把你推荐给博士,而不是写太长的答案。或者看到这个:How does Python's super() work with multiple inheritance?。
答案 1 :(得分:0)
您只需向python类实例添加任何属性,您无需定义特殊类:
img = Image(rgb_img)
img.kp = kp
img.grey = grey