Python子类
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python子类,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2181字,纯文字阅读大概需要4分钟。
内容图文
![Python子类](/upload/InfoBanner/zyjiaocheng/723/4e03f73d1a50491492f24c23d487b5dd.jpg)
我有这个类与分数一起工作(例如(1,2),(3,4)等):
class Fraction(object):
def __init__(self, num=0, denom=1):
''' Creates a new Fraction with numberator num and denominator denom'''
self.numerator = num
if denom != 0:
self.denominator = denom
else:
raise ZeroDivisionError
def __str__(self):
'''Returns the string numerator/denominator '''
return "{0}/{1}".format(self.numerator, self.denominator)
def __repr__(self):
"""blah"""
return Fraction(self.numerator, self.denominator)
我希望有一个子类混合数,它可以接受整数和分数(例如2分数(1,2),3分数(3,4)等).我不知道如何做到这一点,任何有关如何做到这一点的帮助将不胜感激
class MixedNumber(Fraction):
解决方法:
在考虑使用提供的Fraction类实现MixedNumber类时,有两种方法可以立即浮现在脑海中.正如@HunterMcMillen建议的那样,一种方法是使用类使用组合,即利用不同的对象分别表示整数和分数部分.这使您可以访问类中的每个对象专用方法,如果您构建的组件具有每个封装的不同行为,则可以很方便.
class MixedNumber(object):
def __init__(self, whole_number, fraction):
self.whole_number = whole_number
self.fraction = fraction
def __str__(self):
if self.fraction.numerator == 0:
return str(self.whole_number)
elif self.whole_number == 0:
return str(self.fraction)
else:
return '{} {}'.format(self.whole_number,self.fraction)
def __repr__(self):
return 'MixedNumber({},{!r})'.format(self.whole_number,self.fraction)
另一种可能性是继承,如果您的Fraction类支持不正确的分数,那么您可以使用子类以混合数字格式适当地处理初始化和字符串呈现,如下所示:
class MixedNumber(Fraction):
def __init__(self, whole_number, fraction):
num = whole_number * fraction.denominator + fraction.numerator
super(MixedNumber,self).__init__(num, fraction.denominator)
def __str__(self):
# assume positive fractions for demonstration only
q, r = divmod(self.numerator,self.denominator)
if r == 0:
return str(q)
elif q == 0:
return super(MixedNumber,self).__str__()
else:
return '{} {}/{}'.format(q,r,self.denominator)
def __repr__(self):
q, r = divmod(self.numerator, self.denominator)
return 'MixedNumber({},Fraction({},{}))'.format(q,r,self.denominator)
你的Fraction .__ repr__方法应该返回一个字符串,当传入eval时应该实例化与源对象相等的东西,即eval(frac)== frac.有关__str__和__eval__之间区别的更多详细信息,请参见this stack overflow question.
内容总结
以上是互联网集市为您收集整理的Python子类全部内容,希望文章能够帮你解决Python子类所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。