python - 在另一个类的 def 中访问类的变量
问题描述
我正在尝试覆盖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)'''
我想找到更优雅的方式来返回一个看起来像这样的字符串:
鼻子=东西
脖子
=
东西
…………
解决方案
问题:返回字符串的优雅方式看起来像......
您可以使用内置vars
函数来获取__dict__
类变量的 并使用.format(...
and对其进行格式化.join(...
。
参考:
vars([object])
返回
__dict__
模块、类、实例或任何其他具有属性的对象的__dict__
属性。.format(value[, format_spec])
将值转换为“格式化”表示,由大多数内置类型使用的标准格式化语法控制:Format Specification Mini-Language。
<str>.join(iterable)
返回一个字符串,它是 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)
输出:
Nose = 1 Neck = 1 RShoulder = None
用 Python 测试:3.6
推荐阅读
- excel - 匹配另一张纸上的单元格
- python - 根据包含列名的列从数据框列中选择值
- python - python2中无法导入sos包
- window - x11 XChangeProperty 因 BadValue 而失败
- reactjs - 在 TouchableOpacity React Native 内的轮播中滑动照片的问题
- python - Google Cloud Debugger 快照报告错误“No code found at line ...”
- angular - Nginx 提供的 Angular 多个应用程序和 base-href 问题
- web-scraping - 无法加载 url,因为它使用请求模块显示连接错误
- php - Laravel 和 Ajax Like 系统正在保存多条点赞记录
- java - 从 MyBatis 映射器获取 SQL 查询的字符串表示