python中的类及方法

"""定义Fraction类及其构造方法"""
class Fraction:

    def __init__(self,top,bottom):
        self.num = top
        self.den  = bottom
        """注意,形式参数列表包含3项。self是一个总是是指向对象本身的特殊参数,它必须是第一个形式参数
        。然而,在调用方法时,从来不需要提供相应的实际参数。如前所述,分数需要分子与分母两部分状态数据。
        构造方法中self.num定义了Fraction对象有一个叫做num的内部数据对象作为状态的一部分。同理,self.den定义了
        分母。这两个实际参数的值在初赋给了状态,使得新创建的Fraction对象能够知道其初始值 """
        #######要创建Fraction的实例,必须调用构造方法。使用类名并且传入状态的实际值就能完成调用
        # myfraction = Fraction(3,5)
        # print(myfraction)
        # <__main__.Fraction object at 0x0000018007D2C908>
        # Fraction对象myfraction并不知道如何响应打印请求print()函数唯一能做的就是显示存储变量中的实际引用(地址本身)
        # 有两种方法可以解决这一问题。一种是定义一个show方法,使得Fraction对象能够将自己作为字符串来打印。

    def show(self):
        print(self.num,'/',self.den)
        # myfraction = Fraction(3,5)
        # myfraction.show()
        # 3/5
    def __str__(self):
        return str(self.num) + '/' + str(self.den)

    def __add__(self, otherfraction):
        newnum = self.num * otherfraction.den + self.den * otherfraction.num
        newden = self.den * otherfraction.den
        b = gcd(newden,newnum)
        return Fraction(newnum//b,newden//b)
def gcd(m, n):
    """欧几里得算法
    对于整数m和n,如果m能被n整除,则它们的最大公因数就是n,否则就是n和m除以n的余数的最大公因数"""
    while m % n != 0:
        oldm = m
        oldn = n

        m = oldn
        n = oldm % n
    return n
myfraction = Fraction(3,5)
myfraction.show()
# print('I ate ',myfraction,'of the pizza')
a = myfraction.__str__()
print(a)
b = str(myfraction)
print(b)
f1 = Fraction(1,4)
f2 = Fraction(3,2)
c = f1.__add__(f2)
print(c)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值