小言_互联网的博客

python中的类及方法

409人阅读  评论(0)
"""定义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)




转载:https://blog.csdn.net/weixin_44448068/article/details/102014811
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场