我找不到确切的答案。据我所知,__init__Python
类中不能有多个功能。那么我该如何解决这个问题呢?
假设我有一个Cheese用number_of_holes
属性调用的类。我如何有两种创建奶酪对象的方式…
parmesan = Cheese(num_holes = 15)
number_of_holes
属性的参数:gouda = Cheese()
我只能想到一种执行此操作的方法,但这似乎很笨拙:
class Cheese():
def __init__(self, num_holes = 0):
if (num_holes == 0):
# randomize number_of_holes
else:
number_of_holes = num_holes
你说什么?还有另一种方法吗?
None
对于“魔术”值,实际上要好得多:
class Cheese():
def __init__(self, num_holes = None):
if num_holes is None:
...
现在,如果你想完全自由地添加更多参数:
class Cheese():
def __init__(self, *args, **kwargs):
#args -- tuple of anonymous arguments
#kwargs -- dictionary of named arguments
self.num_holes = kwargs.get('num_holes',random_holes())
为了更好地解释*argsand
的概念**kwargs
(你实际上可以更改这些名称):
def f(*args, **kwargs):
print 'args: ', args, ' kwargs: ', kwargs
>>> f('a')
args: ('a',) kwargs: {}
>>> f(ar='a')
args: () kwargs: {'ar': 'a'}
>>> f(1,2,param=3)
args: (1, 2) kwargs: {'param': 3}
问题内容: 我在一个Activity中有一个IntentService,当我尝试调用该服务时,它将引发此错误,我发现这很奇怪,因为如果我声明了空的构造函数。 错误: AndroidManifest.xml 活动: 问题答案: 你是一个内部阶级。如果要将其保留在内部,请将其更改为static: 您可能需要阅读不同类型的嵌套类。google的第一个链接:http : //docs.oracle.com
主模块(App) 数据模块(具有网络和数据库依赖性的Android模块) 域模块(纯Kotlin模块) 为了引入分页,我不得不将类视为域类。(IMO并不是一个可怕的想法,因为最终是一个列表,并且数据源是抽象的) 因此,在域层中,我可以有一个类似的repository: Im aware具有和方法,但工厂驻留在数据层中。我的Viewmodel使用来自模型层的数据,在本例中,模型层是,据我所知,分页列
在我的应用程序中,有几个组件将生成各种不同类型的特定于应用程序的事件。这些事件将发布到代理并传递给N个客户端。其中一些客户端是我的服务器端应用程序中的其他Java类,但主要消费者是我的基于javascript的WebUI。 到目前为止,我目前的方法是定义一个抽象事件基类来封装一些公共字段,然后为每个事件实现一个特定的事件类。 这一直工作正常,只是现在我需要在javascript和java端维护事件
我在学习Kotlin的过程中遇到了一个我想不通的问题。我想在Kotlin中扩展Java类,并且能够在不同的情况下使用它的三个构造函数中的任何一个(基于我想抛出异常时所拥有的信息)。在java中,我的类将如下所示: 有人能建议我在Kotlin如何正确地做到这一点吗?
问题内容: 我正在学习RxJava,并且在很多地方看到可以通过这种方式处理错误: 我是唯一认为这确实是错误代码的人吗?我该如何做得更好?我虽然使用了“访问”我的基本异常的每种具体类型的模式,但是方法始终需要一个;。您不能使用自己的基本异常。 问题答案: 错误处理程序: 您可以这样使用: