【发布时间】:2014-12-02 16:37:14
【问题描述】:
我正在努力处理我的代码,特别是子类。我有一个父类,初始化时将调用其子类以用作属性,以对象列表的形式。我看过很多帖子,有人忘记打电话给父母的__init__()。我的问题有所不同,因为父母正在调用子类,而我不想调用它。
我收到以下错误:
NameError: name 'bundle' is not defined
我很困惑,因为它被明确定义为父类。有什么想法吗?
class bundle(object):
"""Main object to hold graphical information"""
def __init__(self, size,nzone):
self.size = size
self.rows = math.sqrt(size)
self.cols = math.sqrt(size)
subchans = []
r = 1
c = 1
for i in range (1,self.size):
subchans.append(bundle.subbundle(r,c,self.rows,self.cols))
r += 1
if r > self.rows :
r = 1
c += 1
class subbundle(bundle):
""" Defines geometry to represent subbundle"""
def __init__(self, row, col, rows,cols):
【问题讨论】:
-
名称
bundle直到 类定义完成后才定义,因此subbundle不能从它继承并且 是一个嵌套类.但是,从示例中并不清楚为什么您希望subbundle被继承或嵌套。 -
你不能从“bundle”方法调用任何“subbundle”方法。这是另一种方式:“子捆绑”可以调用“捆绑”方法。子类化是为了专门化对象,而不是产生孩子
-
因为你正在做嵌套在另一个类中的类,它不知道
bundle是什么,我认为它必须是subbundle(self)。但是您可能真正想要的是使subbundle(bundle)成为它自己的类,而不是嵌套的 -
谢谢大家,我还在习惯OOP,我想封装,因为这两个东西是密切相关的
标签: python object inheritance subclass