我可以在python中使用多个构造函数并重写__str__方法

问题描述 投票:0回答:2

这里是作业问题,我完全不确定从这里去哪里:在Python中,编写一个名为Act的类,其中包含:一个int类型的实例字段,称为num_members,它表示该行为的成员数量(例如,乐队中的音乐家数量),一个字符串类型的实例字段,称为行为名称,行为类型(乐队,喜剧演员,魔术师等)的类型为type的实例字段,一个字符串类型的实例字段,称为舞台,用于进行该表演的舞台,一个构造函数,它接受四个参数,每个实例字段一个,并适当地设置字段,一个构造函数,它接受除stage以外的所有参数,并将stage设置为null或Nil(适当设置所有其他字段),所有领域的吸气剂方法,所有字段的设置方法。

一旦您编写了此类,我们需要一种很好的方法向用户表示。在Act类中添加一个覆盖str方法的方法。此方法应构造一个包含所有字段值的类的字符串表示形式。

这是我到目前为止所写的内容:

class Act:
def __init__(self, num_members, name, kind, stage = None):
    self._num_members = num_members
    self._name = name
    self._kind = kind
    self._stage = stage
def blablamethod():


def get_num_members(self):
    return self._num_numbers
def get_name(self):
    return self._name
def get_kind(self):
    return self._kind
def get_stage(self):
    return self._stage

def set_num_members(self, num_numbers):
    self._num_numbers = num_numbers
def set_name(self, name):
    self._name = name
def set_kind(self, kind):
    self._kind = kind
def set_stage(self, stage):
    self._stage = stage

num_members = property(get_num_members, set_num_members)
name = property(get_name, set_name)
kind = property(get_kind, set_kind)
stage = property(get_stage, set_stage)

def__str__(self):
    string = "Number of members:" + str(self.num_members)
    string += "/nName:" + self.name
    string += "/nKind of act:" + self.kind
    if self.stage: 
        string += "/nStage:" + self.stage
     return string
python class constructor getter-setter
2个回答
0
投票

您的代码已经满足要求:Act可以用4个参数或3个参数实例化,在这种情况下stage设置为None。可选参数的这种用法在python中是一种好习惯,但是如果您愿意,也可以添加一个完全独立的构造器,将其构造为@classmethod

class Act:
    def __init__(self, num_members, name, kind, stage):
        self._num_members = num_members
        self._name = name
        self._kind = kind
        self._stage = stage

    @classmethod
    def without_stage(cls, num_members, name, kind):
        return cls(num_members, name, kind, None)

0
投票

我能够解决您代码中的某些问题,请在我的评论中找到它们:

© www.soinside.com 2019 - 2024. All rights reserved.