小编Lor*_*Cat的帖子

Python:需要参数时使用super()调用基类的__init __()方法

我试图__init__()在一个超类中调用该方法,其中所说的方法接受参数,但是似乎不起作用。请参见下面的代码:

>>> class A:
        def __init__(self, param1, param2):
            self._var1 = param1
            self._var2 = param2

>>> class B(A):
        def __init__(self, param1, param2, param3):
            super(B, self).__init__(param1, param2)
            self._var3 = param3


>>> a = A("Hi", "Bob")
>>> a._var1
'Hi'
>>> a._var2
'Bob'
>>> 
>>> b = B("Hello", "There", "Bob")

Traceback (most recent call last):
  File "<pyshell#74>", line 1, in <module>
    b = B("Hello", "There", "Bob")
  File "<pyshell#69>", line 3, in __init__
    super(B, self).__init__(param1, param2)
TypeError: must be type, not classobj
>>> …
Run Code Online (Sandbox Code Playgroud)

python inheritance super

4
推荐指数
1
解决办法
1211
查看次数

Scheme符​​号中的区分大小写

根据我的阅读,Scheme中的符号不​​区分大小写 - 即(eq? 'Hello 'hello)求值为#t(因为两者都由符号表示'hello,而scheme具有两个具有相同名称的符号是同一对象的属性).然而,这似乎并没有这样的情况对我来说,事情似乎是大小写敏感的,我是否尝试使用#lang scheme,#lang racket#lang eopl计划的口味.有没有人有任何想法?

scheme case-sensitive case-insensitive racket

3
推荐指数
1
解决办法
821
查看次数

与 Python 中布尔值的比较

我看到有人说,在Python中,与布尔值的比较应该是 形式if x:,而不是if x == True:形式,当然也不是 形式if x is True:

>>> 
>>> id(True)
505509720
>>> a = True
>>> id(a)
505509720
>>> random_string_to_reference_a_different_area_of_memory = "Python"
>>> id(True)
505509720
>>>
Run Code Online (Sandbox Code Playgroud)

玩弄变量并查看内存位置(见上文),在我看来,只有一个True和一个False对象,那么我们为什么不应该这样做if x is True:(或者这样做实际上可以吗)?

if x == True另外,除了没有必要之外,还有什么理由我们不应该这样做== True?如果是的话,你能给我一个关于记忆的描述吗?

我个人认为 usingis比 using 更合适==,因为当我们进行比较时,看起来我们实际上是在查看变量是否指向TrueFalse对象。谁能给我解释一下什么是最好的,为什么,以及它是如何运作的?

python memory variables boolean

1
推荐指数
1
解决办法
2704
查看次数