在另一个类的def中访问类的变量

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

我正在尝试重写Person()类中的str方法:

'''Class Person(object):

def __init__(self, Nose = None, Neck = None, RShoulder = None, RElbow = None, RWrist = None, LShoulder = None, LElbow = None, LWrist = None, MidHip = None, RHip = None, RKnee = None, RAnkle = None, LHip = None, LKnee = None, LAnkle = None, REye = None, LEye = None, REar = None, LEar = None, LBigToe = None, LSmallToe = None, LHeel = None, RBigToe = None, RSmallToe = None, RHeel = None):
    self.Nose = Nose
    self.Neck = Neck
    self.RShoulder = RShoulder
    self.RElbow = RElbow
    self.RWrist = RWrist
    self.LShoulder = LShoulder
    self.LElbow = LElbow
    self.LWrist = LWrist
    self.MidHip = MidHip
    self.RHip = RHip
    self.RKnee = RKnee
    self.RAnkle = RAnkle
    self.LHip = LHip
    self.LKnee = LKnee
    self.LAnkle = LAnkle
    self.REye = REye
    self.LEye = LEye
    self.REar = REar
    self.LEar = LEar
    self.LBigToe = LBigToe
    self.LSmallToe = LSmallToe
    self.LHeel = LHeel
    self.RBigToe = RBigToe
    self.RSmallToe = RSmallToe
    self.RHeel = RHeel
def __str__(self):
    return 'Nose = %s\nNeck = \n%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s'%(self.Nose,self.Neck,self.RShoulder,self.RElbow,self.RWrist,self.LShoulder,self.LElbow,self.LWrist,self.MidHip,self.RHip,self.RKnee,self.RAnkle,self.LHip,self.LKnee,self.LAnkle,self.REye,self.LEye,self.REar,self.LEar,self.LBigToe,self.LSmallToe,self.LHeel,self.RBigToe,self.RSmallToe,self.RHeel)'''

而且我想找到一种更优雅的方法来返回看起来像这样的字符串:

鼻子=某物

脖子=某物.........

python string class instance-variables
1个回答
1
投票

Question:返回看起来像...的字符串的优雅方法。]

您可以使用内置的vars函数获取类变量的__dict__并使用.format(....join(...对其进行格式化。


参考

  • vars([object])

    返回模块,类,实例或具有vars([object])属性的任何其他对象的__dict__属性。

  • __dict__

    [由大多数内置类型使用的标准格式语法将值转换为“格式”表示形式:.format(value[, format_spec])

  • .format(value[, format_spec])

    返回一个字符串,该字符串是可迭代的字符串的串联。


Format Specification Mini-Language

输出

<str>.join(iterable)

经过Python测试:3.6

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