首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用静态方法覆盖__str__以更改类字符串表示形式

用静态方法覆盖__str__以更改类字符串表示形式
EN

Stack Overflow用户
提问于 2017-03-27 22:21:35
回答 1查看 1.2K关注 0票数 1

请注意:这是一个小的,类似的例子,我试图做一些学校作业,因此某些部分的解决办法是不能改变的。这些碎片被指出了。

据我理解,str可以用来格式化打印时如何表示类的格式。

我打算覆盖str方法,以便:

代码语言:javascript
复制
>>>print(class_slim)
my name is... Slim Shady

代码语言:javascript
复制
>>>print(class_fat)
my name is... Fat Shady

下面是示例代码:

代码语言:javascript
复制
class MyClass:
    fname = ''
    lname = ''

    def __init__(self, fname='', lname=''):
        self.name = ""

    def __str__(self):
        return 'my name is... '+self.fname, self.lname

    @staticmethod
    def setname(first, last):
        return first, last


class_slim = MyClass.setname("Slim", "Shady")
print(class_slim)

class_fat = MyClass.setname("Fat", "Shady")
print(class_fat)

现在,我得到的结果是:

代码语言:javascript
复制
>>>class_slim = MyClass.setname("Slim", "Shady")
>>>print(class_slim)
('Slim', 'Shady')

我必须:

  • 使用静态方法(setname)更改fname和lname,
  • 不同的类实例需要返回不同的字符串(我想输出“我的名字是. Slim Shady”和“我的名字是. Fat Shady”)。

如果这其中的任何部分是不可能的,或者我所做的假设是完全错误的,请告诉我,这可能就是问题所在。

EN

回答 1

Stack Overflow用户

发布于 2017-03-28 00:15:57

好的,这是我最后所做的,静态方法需要新建一个类的实例,并将该实例返回到内置于函数中的父类str

代码语言:javascript
复制
class MyClass:

    def __init__(self, first, last):
        self.fname = first
        self.lname = last

    def __str__(self):
        return 'my name is...'+self.fname+" "+self.lname

    if __name__ == '__main__':
        @staticmethod
        def read(first, last):
            newClass = MyClass(first,last)
            return newClass

class_slim = MyClass.read("Slim", "Shady")
print(class_slim)

class_fat = MyClass.read("Fat","Shady")
print(class_fat)

它的输出是

“我的名字is...Slim Shady”

“我的名字是.胖影子”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43057419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档