如果我不在类中创建getter/setter方法,会有什么不同。?

2024-09-27 04:12:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个不使用任何“getter方法”编写类“分数”的代码,它打印出分数(x/y格式)。同一个类编写了一些接口,这些接口将对这些分数进行操作

我使用“getter方法”编写了另一个类似的代码,它的工作与不使用getter方法的代码相同

下面是不带getter方法的代码:

class Fraction(object):

    def __init__(self,numer, denom):
        self.numer = numer
        self.denom = denom

    def __str__(self):
        return str(self.numer)+"/"+str(self.denom)

    def __add__(self,other):
        new_numer = (other.denom * self.numer) + (other.numer * self.denom)
        new_denom = other.denom * self.numer
        return Fraction(new_numer, new_denom) 

    def __mul__(self,other):
        new_numer = other.numer * self.numer
        new_denom = other.denom * self.denom
        return Fraction(new_numer, new_denom)

    def __sub__(self,other):
        new_numer = (other.denom * self.numer) - (other.numer * self.denom)
        new_denom = other.denom * self.numer
        return Fraction(new_numer, new_denom) 

    def toFloat(self):
        convert = self.numer/self.denom
        return convert

下面是getter方法的代码:

class fraction(object):
    def __init__(self, numer, denom):
        self.numer = numer
        self.denom = denom

    def __str__(self):
        return str(self.numer) + ' / ' + str(self.denom)

    def getNumer(self):     # getter method for numerator
        return self.numer

    def getDenom(self):     # getter method for denominator 
        return self.denom

    def __add__(self, other):
        numerNew = other.getDenom() * self.getNumer() \
                   + other.getNumer() * self.getDenom()
        denomNew = other.getDenom() * self.getDenom()
        return fraction(numerNew, denomNew)

    def __sub__(self, other):
        numerNew = other.getDenom() * self.getNumer() \
                   - other.getNumer() * self.getDenom()
        denomNew = other.getDenom() * self.getDenom()
        return fraction(numerNew, denomNew)

    def convert(self):
        return self.getNumer() / self.getDenom()

在这里,我不确定getter和setter方法有什么帮助。因为,如果我看这个例子,无论是否使用getter,这两个代码的工作方式都是相同的

请帮我理解这部分。我请求你把我当作OOP(TIA)中的新手


Tags: 方法代码selfnewreturndefothergetter

热门问题