如何使父类对象引用子类?

2024-09-27 21:34:52 发布

您现在位置:Python中文网/ 问答频道 /正文

比如在java或C中,我们可以创建一个

Account obj = new SavingsAccount();

其中Account是父类SavingsAccount是子类

如何使用python做同样的事情

基本上我想做的就是这样 https://repl.it/@MushfiqurRahma1/Polymorphic-Object


Tags: httpsobjnewobjectitaccountjavarepl
3条回答

Python是动态类型化的:名称指的是对象,不涉及任何类型概念。你只是

>>> class Account: pass
...
>>> class SavingsAccount(Account): pass
...
>>> obj = SavingsAccount()

每个对象存储对其自身类型的引用

>>> type(obj)
<class '__main__.SavingsAccount'>

每个类型都有一个对其方法解析顺序(MRO)的引用

>>> type(obj).__mro__
(<class '__main__.SavingsAccount'>, <class '__main__.Account'>, <class 'object'>)

实例属性不是根据“定义”它们的类来“划分”的;每个属性只存在于实例本身上,不引用任何特定的类

方法只存在于类本身中;当调用obj.foo()时,MRO用于确定使用了谁的定义

Python是一种松散类型的语言。这意味着您不必指定变量类型。你可以这样做:

class Account():
    def deposit():
        pass
class SavingsAccount(Account):
    pass

obj = SavingsAccount()
obj.deposit(20)

编辑:正如chepner指出的:Python is strongly typed, but also dynamically typed: type is associated with an object, not the name referring to an object.

Python使用Duck类型,这意味着您不应该真正关心赋值左侧的类。只要实例化子类,您就应该能够使用它的父“接口”来执行动态方法调用之类的操作

相关问题 更多 >

    热门问题