仅接受方法中的对象和 return 个新对象

Accept only objects in a method and return new object

我想创建一个方法,该方法只获取其中定义的 class 的对象,操作它和 returns 相同 class 的新对象。

例如:

class fraction():
    def__init__(self, counter, denominator):
        self.counter=counter
        self.denominator=denominator
    
    def add(self,(object of class fraction))
        (addition of object the method from called in and the object which is called in the  method
        return (new object of the class fraction)

有人知道如何完成这项工作吗? 此致, 大卫

你可以这样做:

class Fraction:
    def __init__(self, counter, denominator):
        self.counter = counter
        self.denominator = denominator

    def add(self, fraction):
        return Fraction(self.counter * fraction.denominator + fraction.counter * self.denominator,
                        self.denominator * fraction.denominator)


a = Fraction(2, 3)
b = Fraction(3, 5)
a_plus_b = a.add(b)
print(a_plus_b.counter, a_plus_b.denominator)

可以直接在add函数中添加类型检查:

def add(self, fraction):
        if not isinstance(fraction, Fraction):
            raise TypeError(f"{fraction} is not a Fraction.")
        return Fraction(self.counter * fraction.denominator + fraction.counter * self.denominator,
                        self.denominator * fraction.denominator)

如果你想将它集成到标准分数模块中,你可以制作一个 class 继承自 fractions.Fraction,这将输出一个很好的不可约分数:

import fractions


class MyFraction(fractions.Fraction):

    def add(self, fraction):
        return MyFraction(self.numerator * fraction.denominator + fraction.numerator * self.denominator,
                        self.denominator * fraction.denominator)


a = MyFraction(2, 3)
b = MyFraction(10, 6)
a_plus_b = a.add(b)
print(a_plus_b.numerator, a_plus_b.denominator)