使用变量创建 class 个对象

Using variables to create class objects

这是我在这里的第一个问题,所以我希望我问的是 'right' 方式。下面的代码应该生成一个 class 对象,该对象应该在最后通过函数 createAccount() 命名。我原以为该帐户是姓氏和出生日期的组合,但它创建了名为 accountName 的 class 对象,而不是变量本身的乘积。我可以看到 为什么 它正在这样做,但我不知道如何更正它。

class Account(object):
    def __init__(self, balance):
        self.balance = balance

    def deposit(self,amount):
        self.balance += amount
        print(self.balance)
        return self.balance

    def withdraw(self,amount):
        if amount <= self.balance:
            self.balance -= amount
            print(self.balance)
            return self.balance
        else:
            print("You do not have sufficient funds for this transaction, please contact your local branch manager")

    def printBalance(self):
        print(self.balance)

def createAccount():
    name = input("Client Surname")
    dob = input("client Date of Birth")
    accountName = name+dob
    print(accountName) # for debug
    accountName = Account(0) # opening account balance is £0
    return accountName

我想你想要的是你的 Account 对象中的 "name" 字段。例如:

class Account(object):
    def __init__(self, name, balance):
        self.name = name
        self.balance = balance

. . .

def createAccount():
    name = input("Client Surname")
    dob = input("client Date of Birth")
    accountName = name + dob
    print(accountName) # for debug
    account = Account(accountName, 0.0) # opening account balance is £0
    return account

createAccount 返回的对象包含账户余额和账户名。

您正在创建一个变量 accountName 并为其分配一个文本字符串对象,其内容是姓名和出生日期。

接下来您将破坏它并使用您正在创建的新帐户对象重新分配 accountName。当您向其分配新内容时,accountName 的旧值会丢失。

你需要做的是将name+dob传递给Account的init函数,在那个函数中,将传入的账户名赋给一个对象变量,比如self.accountName:

    def __init__(self, name, balance):
        self.accountName = name
        self.balance = balance
...
def createAccount():
    name = input("Client Surname")
    dob = input("client Date of Birth")
    account = Account(name+dob, 0) # opening account balance is £0
    return account

请注意,使用 name+dob 作为帐户名是个坏主意,因为以后很难弄清楚名字的结尾和出生日期的开始。但至少,这会让你入门。