以下课程
class Member(object):
def __init__(self, fields, scouts, id):
self.id = id
self.fields = fields
self.scouts = scouts
self.routes = [Route(s) for s in self.scouts ]
self.routeBreak = []
self.numScouts = len(self.scouts)
我运行此方法
def createMember(self):
random.shuffle(self.fields)
self.routeBreak = self.createBreaks(len(self.fields))
self.assignRoutes()
示例:
Member.createMember()
但是,执行此操作后,对象成员将返回“无”。我尝试将createMember()添加到 init 方法
class Member(object):
def __init__(self, fields, scouts, id):
self.id = id
self.fields = fields
self.scouts = scouts
self.routes = [Route(s) for s in self.scouts ]
self.routeBreak = []
self.numScouts = len(self.scouts)
random.shuffle(self.fields)
self.routeBreak = self.createBreaks(len(self.fields))
self.assignRoutes()
然后一切都很好。我可以在对象上运行我的其他方法没问题。我不知道为什么会这样,我需要弄清楚如何在 init 方法之外运行createMember()。我对使用类和方法相当新,所以任何解释都会有所帮助。谢谢!
答案 0 :(得分:0)
扩展蒂姆的问题,在使用类时,你有类定义,类型,然后是类的实例,即对象。
createMember应该被称为一个实例的方法,而不是类本身的方法(有一种类型 - 静态方法或类方法,它们没有" self& #34;。)
所以你需要创建实例:
m = Member()
注意 - 你需要参数来做到这一点。如果您希望它不需要参数,则需要更多代码。 然后在其中访问该方法:
m.createMember()
您也可以在_init__(称为构造函数)中调用它,其中" self"是实例:
self.createMember()
答案 1 :(得分:0)
由于createMember
需要一个参数self
,它应该是实例本身,你不能通过Member.createMember()
调用它,因为这使得它成为一个没有成员实例作为必需参数的未绑定方法。成员是一个类而不是实例。您必须通过Member.createMember(memberInstance)
调用它来明确提供实例本身。
Member().createMember()
不需要提供参数是因为Member()
已经创建了一个实例,它将隐式地充当第一个参数self
。