可以通过编程重命名课程吗?

时间:2018-12-30 04:13:50

标签: python class

我有Vehicle类。我想将其重命名为Rover。我知道我们可以创建另一个引用变量,但是我不希望类的名称相同。

玩过__name__,但没有成功。

class Vehicle:
    pass
st="Rover"
Vehicle.__name__=st
obj1=Rover()

预期: Vehicle类已重命名为Rover,无需文件处理且在程序内。

1 个答案:

答案 0 :(得分:2)

在评论中,您引述了https://docs.python.org/3/tutorial/classes.html(非常轻微):

  

这提供了导入和重命名的语义

这是实际的报价,还有更多上下文:

  

在Smalltalk中,类本身就是对象。这提供了导入和重命名的语义。

这是在说我们可以拥有一个Python库,并且该库中有一个类:

# lib_k.py
class Klass:
    ... definitions ...

然后,在其他Python模块中,我们可以编写:

from lib_k import Klass as LibKClass

如果我们也要做的话,这主要是有用的:

from lib_l import Klass as LibLClass

然后编写如下代码:

def f(args):
    obj_k = LibKClass(...)
    obj_l = LibLClass(...)

我个人更喜欢写:

import lib_k
import lib_l

def f(args):
    obj_k = lib_k.Klass(...)
    obj_l = lib_l.Klass(...)

但是两种方式都是允许的,使用哪种方式只是出于品味的问题,而不是正确性。