【问题标题】:unbound method __init__() must be called with CreditCard instance as first argument (got VisaCreditCard instance instead)必须使用 CreditCard 实例作为第一个参数调用未绑定的方法 __init__()(改为获取 VisaCreditCard 实例)
【发布时间】:2014-07-14 15:46:41
【问题描述】:

好的,我正在尝试在父级下迁移一些类似的类,以便一次修改所有类更容易。这是我的代码:

class CreditCard():
    def __init__(self, name, short, tag, length):
        self.name = name
        self.short = short
        self.tag = tag
        self.length = length
        self.CCnumber = tag
        while (len(self.CCnumber) < self.length - 1):
            rand_int = random.randrange(10)
            rand_str = str(rand_int)
            self.CCnumber = self.CCnumber + rand_str
        if (length == 15):   
            d = CheckSumDigit(self.CCnumber)
            self.CCnumber = self.CCnumber + d
        if (not RigorousVerifyLuhn(self.CCnumber)):
            ln = self.length - 1
            clip = self.CCnumber[0:ln]
            fulfilled = False
            dig = 0
            while (dig <= 9 and fulfilled == False):
                cand = clip + str(dig)
                if (RigorousVerifyLuhn(cand)):
                    fulfilled = True
                    self.CCnumber = cand
                dig = dig + 1
            if (fulfilled == False):
                if (len(self.CCnumber) != self.length):
                    print("Invalid " + self.name + " number, LENGTH " + len(self.CCnumber) + " (" + self.CCnumber + ")")
                else:
                    print("Invalid " + self.name + " number, LUHN " +  "(" + self.CCnumber + ")")



class AmexCreditCard(CreditCard):

    def __init__(self):
        self.NAME = 'American Express'
        self.SHORT = 'AMEX'
        self.TAG = '3'
        self.LENGTH = 15
        CreditCard.__init__(self, 'American Express', 'AMEX', '3', 15)

class VisaCreditCard():

    def __init__(self):
        self.NAME = 'Visa'
        self.SHORT = 'VISA'
        self.TAG = '4'
        self.LENGTH = 16
        CreditCard.__init__(self, self.NAME, self.SHORT, self.TAG, self.LENGTH)

class MasterCardCreditCard():

    def __init__(self):
        CreditCard.__init__(self, 'MasterCard', 'MC', '5', 16)

class DiscoverCreditCard():

    def __init__(self):
        CreditCard.__init__(self, 'Discover', 'DISC', '6011', 16)

我在儿童信用卡上有几种不同风格的语法,因为我不确定它的正确语法。当我运行它时,我得到了这个错误:

TypeError: unbound method __init__() must be called with CreditCard instance as first argument (got VisaCreditCard instance instead)

谁能帮我解决这个错误?谢谢!

【问题讨论】:

    标签: python python-2.7


    【解决方案1】:

    你忘了从CreditCard继承:

    class VisaCreditCard(CreditCard):
    

    这同样适用于您的 MasterCardCreditCardDiscoverCreditCard 类。

    【讨论】:

    • 刚刚注意到并修复了它!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2011-05-27
    • 2018-02-18
    • 2023-04-06
    • 2017-12-09
    • 2015-12-01
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多