总是出问题,不是顺序就是bug,求解决Python

img


就是有个问题,我写出来了,但是如果先给two(5)这样,在写一个two.pown(),他默认是two(5).pown(),会输出2的五次方啊,但是实际需要2的0次方
代码如下
global a
a=0

class two:
def init(self,*n):
if len(n)!=0:
global a
a=n[0]

@classmethod
def pown(cls,*m):
    if len(m)!=0:
        return 2**m[0]
    else:
        return 2**a

print(two.pown(2)) # 输出2的n次方
print(two.pown()) # 输出2的0次方
print(two(2).pown()) # 输出2的n次方
print(two(4).pown(4)) # 输出2的m次方
代码这,23交换顺序,输出是4和4,而我需要应该是4和1,不交换顺序是对着,1和4

class 方法的init初始化没写对,一进来没有调用


a = 0
class two:
    def __init__(self, *n):
        if len(n) != 0:
            global a
        a = n[0]

    @classmethod
    def pown(cls, *m):
        if len(m) != 0:
            return 2 ** m[0]
        else:
            return 2 ** a
print(two.pown(2))  # 输出2的n次方
print(two.pown())  # 输出2的0次方
print(two(2).pown())  # 输出2的n次方
print(two(4).pown(4))  # 输出2的m次方