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

2024-06-16 09:08:44 发布

您现在位置:Python中文网/ 问答频道 /正文

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

''类人(对象):

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)'''

我想找到一种更优雅的方法来返回字符串,如下所示:

鼻子

脖子=某物


...


Tags: selfnonenoseneckrwristrkneelshoulderlwrist
1条回答
网友
1楼 · 发布于 2024-06-16 09:08:44

Question: elegant way to return a string which will look like ...

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


参考

  • ^{}

    Return the __dict__ attribute for a module, class, instance, or any other object with a __dict__ attribute.

  • ^{}

    Convert a value to a “formatted” representation, as controlled by a standard formatting syntax that is used by most built-in types: Format Specification Mini-Language.

  • ^{}

    Return a string which is the concatenation of the strings in iterable.


class Person:
    def __init__(self, **kwargs):
        self.Nose = kwargs.get('Nose', None)
        self.Neck = kwargs.get('Neck', None)
        self.RShoulder = kwargs.get('RShoulder', None)

    def __str__(self):
        return '\n'.join(('{} = {}'
                          .format(k, v) for k, v in vars(self).items()))


p = Person(Nose=1, Neck=1)    
print(p)

Output:

Nose = 1
Neck = 1
RShoulder = None

用Python测试:3.6

相关问题 更多 >