iT邦幫忙

0

為甚麼會出錯?不能理解(PYTHON)

各位大大好,我寫了一個程式,但就不知道為甚麼會出錯/images/emoticon/emoticon06.gif

class Calc:
    def plus(self, a, b):
        return a + b
    def minus(self, a, b):
        return a - b
a = Calc.plus(1, 2)
b = Calc.minus(2, 1)
print(a)
print(b)

然後有Error

File "c:\Users\ericc\Downloads\python程式\Calc.py", line 6, in <module>
    a = Calc.plus(1, 2)
TypeError: plus() missing 1 required positional argument: 'b'

我改成了這樣

class Calc:
    def plus(self, a, b):
    	self.a = a
        self.b = b
        return self.a + self.b
    def minus(self, a, b):
        self.a = a
    	self.b = b
        return self.a - self.b
a = Calc.plus(1, 2)
b = Calc.minus(2, 1)
print(a)
print(b)

Error變成了

File "c:\Users\ericc\Downloads\python程式\Calc.py", line 14
    self.b = b
             ^
TabError: inconsistent use of tabs and spaces in indentation

真的救命
求幫忙/images/emoticon/emoticon02.gif

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

5
dragonH
iT邦超人 5 級 ‧ 2020-10-26 16:08:12
最佳解答

這是你要的?

code

class Calc:
    def __init__(self, a, b):
        self.a = a
        self.b = b
    def plus(self):
        return self.a + self.b
    def minus(self):
        return self.a - self.b
        
Calc(3, 2).plus() # return 5
Calc(3, 2).minus() # return 1

ideone

EricChu iT邦新手 4 級 ‧ 2020-10-26 16:13:44 檢舉

謝謝!!!!!!!
我現在才知道可以這樣寫/images/emoticon/emoticon12.gif

dragonH iT邦超人 5 級 ‧ 2020-10-26 16:17:04 檢舉

/images/emoticon/emoticon42.gif

你原本的寫法就差在沒有建構他所以沒有 self 而已

a = Calc().plus(1, 2)
b = Calc().minus(2, 1)
print(a) // 3
print(b) // 1
1
brayce
iT邦新手 5 級 ‧ 2020-10-27 18:07:58

也可以試試用靜態方法(static method)的方式來寫
希望有幫助到你

class Calc:
    @staticmethod
    def plus(a, b):
        return a + b

    @staticmethod
    def minus(a, b):
        return a - b

a = Calc.plus(1, 2)
b = Calc.minus(2, 1)
print(a)
print(b)
marlin12 iT邦研究生 5 級 ‧ 2020-12-23 23:56:23 檢舉

這才是正確的方法

我要發表回答

立即登入回答