- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在研究 python oop 风格。我似乎 __init__
构造方法如下。我以前没见过这种风格。为什么要像在这些东西中那样使用双重 __init__
方法?
前-
class MinimumBalanceAccount(BankAccount):
def __init__(self, minimum_balance):
BankAccount.__init__(self)
self.minimum_balance = minimum_balance
def withdraw(self, amount):
if self.balance - amount < self.minimum_balance:
print 'Sorry, minimum balance must be maintained.'
else:
BankAccount.withdraw(self, amount)
最佳答案
这是Python中类继承的一个例子。您已将 BankAccount
类继承到 MinimumBalanceAccount
类。但是,通过在 MinimumBalanceAccount
类中引入 __init__
函数,您已经覆盖了 BankAccount
类的 __init__
函数。基类可能会初始化一些您需要的变量。因此它在 Child 类的 __init__
构造函数中被调用以确保这一点。
您可以使用 super
类来实现相同的行为。在 Python 2.x 中,等价物是
class MinimumBalanceAccount(BankAccount):
def __init__(self, minimum_balance):
self.minimum_balance = minimum_balance
super(MinimumBalanceAccount, self).__init__()
或者在 Python 3.x 中,
class MinimumBalanceAccount(BankAccount):
def __init__(self, minimum_balance):
super().__init__()
但是,您必须明白,这只会运行它首先从基本方法中找到的任何 __init__
方法。所以在多重继承方面,如果基类中没有实现super
,调用其他各种类的__init__
方法会很困难。因此,请不惜一切代价避免使用多重继承或在所有类中实现 super
。
(eg)
class BankAccount(object):
def __init__(self):
# Some action here
# But no super method called here
class MinimumBalanceAccount(BankAccount, LoanAccount):
def __init__(self, minimum_value):
super(MinimumBalanceAccount, self).__init__() # Calls BankAccount.__init__()
super(MinimumBalanceAccount, self).__init__() # Still calls the same
如果您仍然希望使用多重继承,最好使用 ParentClass.__init__
方法或将 super
方法调用添加到 __init__
在所有基类中。
关于python - 为什么在 python 中使用 dual __init__?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28544469/
为什么下面的查询给出值 2 而不是我期望的 1? SELECT SUM(1) FROM ( SELECT '0' as R FROM dual UNION SELECT '1' as R FROM
我使用的是 Oracle 11g,并且我确实了解第 3 方授权的问题。 但是,假设 user1 创建了一个 View “view1”作为 Select 'foo' from Dual。 然后我将 vi
正常情况下(不使用SYS或可能使用它)- SQL> select * from dual; D - X 在不太正常的情况下(作为 SYS 连接)- SQL> alter database close;
如果表肯定是空的,我将使用此代码插入默认行。我试图扩展它以插入多行,但无法弄清楚语法: INSERT INTO myTable(`myCol`) SELECT 'myVal' FROM DUAL WH
当对 LE 设备使用 ScanCallback 时,我得到以下条件为真: bluetoothDevice.getType() == BluetoothDevice.DEVICE_TYPE_DUAL 设
zoom允许我们在实际定义了更多变量的上下文中使用仅使用某些状态变量的状态操作。 {-# LANGUAGE TemplateHaskell #-} import Control.Lens import
我需要加入从我的程序中动态检索的动态数字列表。行数不是固定的,使用的数字也不是固定的。 我没有找到比以下更好的方法来实现这一点(就我而言,临时表没有帮助): select 111 as col1, 3
我试图获取从上周到当前的日期,但似乎 或 >= 在这里不起作用。 WITH curr_cyc_dt AS ( SELECT BETWEEN TO_DATE ('20181228', 'yyyy
我想向数据库中插入一些数据。在插入的时候,我想先做一个判断:如果table1和table2中不存在title,则插入。这个双关语怎么写?这是正确的吗?或者……谢谢。 mysql_query(" INS
我有一个像这样的嵌套数组(只有一层深): $a = array( array( 1, 2, 3 ), array( 2, 4, 6 ), array( 5, 10, 15 ) ); 我
我们有三个redis服务器设置如下: Node1: Default Redis Master & Running Redis Sentinel Software Node2: Redis Slave
因此,A* 指针可以指向任何具有基 A 的对象,而 B* 指针可以指向任何具有基 B*。有没有办法创建一个只能指向以 A 和 B 为基础的对象的指针? 我还希望它是我可以存储为类成员的东西(也许是智能
双表用于选择伪列。 它有一行和一列 DUMMY,其值为 X。 我有两个问题 伪代码实际上做了什么 列是什么意思? 双重身份如何给予 值例如: select sysdate from dual 将导致当
我很惊讶这个问题还没有被问到。我一定错过了一些非常明显的东西,我已经准备好接受所有的反对票和 3 秒的回答。 在 MSSQL 中,您可以调用 GETDATE() 而不必依赖于数据库表,但在 Oracl
什么是“双生命”模块? perldelta for Perl 5.14 中有提到. 最佳答案 Dual Life 模块是存在于两个断开连接的源存储库中的模块,通常意味着在 Perl 核心(与 perl
不久前,我在使用jdbc插入/更新数百万条记录时遇到了数据库性能问题。为了提高性能,我更改了代码以使用batch。然后我决定使用 jprofiler 监控代码以了解性能提高了多少......但同时监控
我有一个插入和更新表的函数。调用它的来源: select AGENTS_REGISTRATION() from dual; 或者: declare x NUMBER; begin select
能给我一些类似的东西吗 SELECT (1, 2, 4542, 342) FROM DUAL; 然后像这样得到它? | 1 | | 2 | | 4542 | | 3
有没有办法在 Oracle 中创建/重新创建双表?它不小心掉了下来。 最佳答案 您可能应该联系 Oracle 支持。 你有备份吗?如果是这样,请从备份中恢复该表。否则(如果您不适合联系 Oracle)
Dual 是一个 newtype-wrapper,只是颠倒了 mappend 的顺序对于包裹类型的 Monoid实例: >>> "hello" <> " " <> "world" "hello wor
我是一名优秀的程序员,十分优秀!