繁体   English   中英

您如何用Python称呼孩子班?

How do you call a child class pythonically?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我最近开始使用Python学习OOP,并且为了测试我的类构建和继承技能,我为银行应用程序构建了一个简单的框架。 据我所知,基于对OOP中如何执行继承的了解,我的代码在语法方面没有错:

import pickle, sys, datetime

class Bank():

    def __init__(self):
        with open('accounts.txt','rb') as fp:
            accounts=pickle.load(fp)

    def exit(self):
        with open('accounts.txt','wb') as fp:
            pickle.dump(accounts,fp)
        sys.exit()

class TransactionMenu(Bank):

    def __str__(self,account):
        if str(super().accounts[account])[::-1].find('.')==-1:
            nT=str(super().accounts[account])+'.00'
        elif str(super().accounts[account])[::-1].find('.')==1:
            nT=str(super().accounts[account])+'0'
        else:
            nT=str(super().accounts[account])
        return '£'+nT

    def balanceEnquiry(self,account):
        print('Date:    '+datetime.datetime.now()+'\n'+'Account name:    '+account+'\n'+'Balance:    '+self.__str__(account))

    def deposit(self,account):
        while True:
            print('current balance:    '+self.__str__(account))
            amt=input('enter deposit amount: ')
            try:
                if '.' in amt:
                    amt=float(amt)
                else:
                    amt=int(amt)
                super().accounts[account]+=amt
                print('new balance:    '+self.__str__(account))
                break
            except:
                pass

    def withdraw(self,account):
        while True:
            print('current balance:    '+self.__str__(account))
            amt=input('enter withdrawal amount: ')
            try:
                if '.' in amt:
                    amt=float(amt)
                else:
                    amt=int(amt)
                super().accounts[account]-=amt
                print('new balance:    '+self.__str__(account))
                break
            except:
                pass

    def __init__(self,account):    
        while True:
            choice=input('enter balance enquiry, deposit, withdraw or exit: ').lower()
            if choice=='b' or choice=='balance' or choice=='balance enquiry' or choice=='enquiry' or choice=='balance enquiry' or choice=='bal':
                self.balanceEnquiry(account)
            elif choice=='d' or choice=='deposit':
                self.deposit(account)
            elif choice=='w' or choice=='withdraw':
                self.withdraw(account)
            elif acc=='e' or acc=='exit':
                super().exit()

class Menu(Bank):

    def logIn(self):
        while True:
            accN=input('enter your account name or exit: ').lower()
            if acc=='e' or acc=='exit':
                super().exit()
            else:
                for account in super().accounts:
                    if accN==account:
                        TransactionMenu(accN)
                        break

    def createAccount(self):
        while True:
            newAcc=input('enter your forename and surname or exit: ').lower()
            if acc=='e' or acc=='exit':
                super().exit()
            else:
                super().accounts[newAcc]=0.00

    def __init__(self):
        while True:
            acc=input('enter login, register or exit: ').lower()
            if acc=='l' or acc=='login' or acc=='log in' or acc=='log-in':
                self.logIn()
                break
            elif acc=='r' or acc=='register' or acc=='reg':
                self.createAccount()
                break
            elif acc=='e' or acc=='exit':
                super().exit()


Bank().Menu()

但是,当我调用Bank()。Menu()时,出现以下错误:

Traceback (most recent call last):
  File "C:\Users\xavier\Desktop\bank\bank.py", line 104, in <module>
    Bank().Menu()
AttributeError: 'Bank' object has no attribute 'Menu'

这意味着我没有正确执行继承,但是我看不到这种情况。

任何帮助深表感谢。

1 个回复

通过像class Menu(Bank)一样定义Menu意味着BankMenu的超类。

Menu将继承Bank所有内容,但可以通过在子类中重新定义来忽略继承。

据我所知,将某些东西声明为超类并没有在超类内部定义子类。

我不确定您要做什么,因此很难为您提供建议。 我希望这可以解释一些事情。

1 哪个是父母和孩子班?

我通常会像这样实例化类 但以下几行使我感到困惑... 因此,请解释一下哪个班级属于哪个班级? 下面的代码是父类和子类。 列表还是数组列表? 下面的代码是父类和子类。 共享首选项还是编辑器? ...

2 如何从孩子通知家长班?

我正在尝试解决一个体系结构问题,但是我想找到最合适的方法。 我有游戏场景GameLayer.h,在这种情况下,这是我的观点。 我也有GameEngine类,我想成为控制器。 我有从CCNode派生的自定义Egg类,并通过Egg类中的计划实现了一些计时器逻辑。 我通过addChild方 ...

3 与孩子班一起填充基班?

我需要在其中将一些新字段及其所有现有字段/属性添加到现有类中。 因此,每当我的派生类被DAL填充时,我也将填充基类的所有字段。 目前,我正在这样做,但是不确定这是正确的方法吗? 请给我一个例子。 我也不确定每次初始化派生类时基类对象是否会是一个新对象? ...

7 如何注册/聚集父母和孩子班?

我正在寻找一种自动将子类与WordPress中的父类挂钩的好方法。 我正在使用一些不同的模板创建一个插件,并且我希望将所有子模板类收集到一个数组中,以便列出它们。 ...

8 寻找所有父母班的孩子

我有一个特殊的关系,如下 班级学校有_许多系,系属于_学校 班系有_很多老师,老师属于_所属系 并且我希望能够列出所有学校教师,基于他们的聘用时间(在本例中为“ created_at”)而不是按部门进行组织。 我希望ruby在rails上具有非常酷的查找功能:D,但如 ...

9 演员和:从父母到孩子班

我有2类:hObject,抽屉。 抽屉继承自hObject。 使用此代码,我通过id检索特定对象: 现在我想正确地将foundObj从hObject强制转换为Drawer。 与: 我复习 ')'标记之前的预期主要表达式 动态演员呢? 考虑:在我开 ...

10 怎么称呼它? 宣布一个父班,分配一个子班[关闭]

首先,我没有做任何特别的事情。 我知道该怎么做,只是我不知道该怎么称呼。 当您编写这样的代码时: 我想知道是否声明一个哺乳动物类的对象并辅助一个子类(在此示例中是猫或狗)是否具有名称。 为了使我的寻找更加清楚。 我可以在Mammal类中使用一个称为SayHi()的方法,并 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM