相关疑难解决方法(0)

哪些类不能被子类化?

是否有关于哪些内置和标准库类不可子类化("最终")的规则?

从Python 3.3开始,这里有几个例子:

  • bool
  • function
  • operator.itemgetter
  • slice

我发现了一个问题,它涉及C语言和纯Python中"final"类的实现.

我想了解是什么原因可以解释为什么一个班级被选为首选的"最终".

python inheritance language-design class python-3.x

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

Python中的抽象属性

在Python中使用抽象属性实现以下Scala代码的最短/最优雅的方法是什么?

abstract class Controller {

    val path: String

}
Run Code Online (Sandbox Code Playgroud)

Controller强制使用子类来定义Scala编译器的"路径".子类看起来像这样:

class MyController extends Controller {

    override val path = "/home"

}
Run Code Online (Sandbox Code Playgroud)

python oop abstract-class scala

58
推荐指数
10
解决办法
4万
查看次数

Python中对象的布尔值

我们知道,Python有对象的布尔值:如果一个类有一个__len__方法,它的每个实例__len__()都会返回0,它将被计算为一个布尔值False(例如,空列表).

实际上,每个可迭代的空自定义对象都被评估为False好像它出现在布尔表达式中.

现在假设我有一个foo属性类bar.我怎样才能定义它的真值,以便它会被评估True if bar % 2 == 0,False否则呢?

例如:

myfoo = foo()
myfoo.bar = 3
def a(myfoo):
    if foo:
        print "spam"
    else:
        print "eggs"
Run Code Online (Sandbox Code Playgroud)

所以,a(myfoo)应该打印"eggs".

python boolean

34
推荐指数
2
解决办法
2万
查看次数

Python既不是真也不是假的东西

我刚发现这个:

a = (None,)
print (a is True)
print (a is False)
print (a == True)
print (a == False)
print (a == None)
print (a is None)
if a : print "hello"
if not a : print "goodbye"
Run Code Online (Sandbox Code Playgroud)

产生:

False
False
False
False
False
False
hello
Run Code Online (Sandbox Code Playgroud)

所以既不是,也不等于True或False,但在if语句中表现为True.

为什么?

更新:

实际上,我刚刚意识到这并不像我想象的那么模糊.我得到a = 2的相同结果(虽然不是a = 0或a = 1,它们分别被认为等于False和True)

python boolean

12
推荐指数
2
解决办法
7205
查看次数