Python 可以通过编程方式重命名类吗?
我有Python 可以通过编程方式重命名类吗?,python,class,Python,Class,我有车辆课程。我想将其重命名为Rover。我知道我们可以创建另一个引用变量,但我不希望类的名称再相同 玩了\uuuuu name\uuuuuu,但没有成功 class Vehicle: pass st="Rover" Vehicle.__name__=st obj1=Rover() 预期: Vehicle类重命名为Rover,无需文件处理且在程序内。在评论中,您有一段(非常轻微的)引语,引自: 这为导入和重命名提供了语义 下面是实际的引用,还有一点上下文: 在Smalltalk中,类本
车辆
课程。我想将其重命名为Rover
。我知道我们可以创建另一个引用变量,但我不希望类的名称再相同
玩了\uuuuu name\uuuuuu
,但没有成功
class Vehicle:
pass
st="Rover"
Vehicle.__name__=st
obj1=Rover()
预期:
Vehicle
类重命名为Rover
,无需文件处理且在程序内。在评论中,您有一段(非常轻微的)引语,引自:
这为导入和重命名提供了语义
下面是实际的引用,还有一点上下文:
在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(...)
但是这两种方法都是允许的,使用哪种方法是一种品味问题,而不是正确性问题。在评论中,你有一段(非常轻微的)引语: 这为导入和重命名提供了语义 下面是实际的引用,还有一点上下文: 在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(...)
但是这两种方法都是允许的,使用哪种方法是一种品味问题,而不是正确性问题。在这里继承会更好吗?更改类的基本名称将打破许多依赖代码不?为什么要这样做?在什么情况下这样做可以节省工作?如果你解释一下上下文,我们可能会建议一个更好的选择。这听起来像是一个错误。你试图做的远远不是最佳实践。如果要更改类名,请更改代码。分配给该类的
\uuu name\uuuu
绝对不会导致引用该类的现有全局变量Vehicle
更改其名称…在这里继承会更好吗?更改类的基本名称将打破许多依赖代码不?为什么要这样做?在什么情况下这样做可以节省工作?如果你解释一下上下文,我们可能会建议一个更好的选择。这听起来像是一个错误。你试图做的远远不是最佳实践。如果要更改类名,请更改代码。分配给该类的\uuu name\uuu
绝对不会导致引用该类的现有全局变量Vehicle
,若要更改其名称…import
ing一个类并给它一个不同的本地名称,这样并不会更改实际的类对象。i、 e.print(LibKClass.\uu name\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。另外,模块名(以及相应的文件名)应该全部是小写的(根据),因此我建议在示例代码中避免使用它们(因为这可能会给新手带来错误的想法)。@martineau:好的,我将在这里将它们重命名为lib_k
和lib_l
。我想提一下,\uu name\uuuuuuuuu
保持不变的事实,但决定在这一点上停止。托雷克:那更好……而且你不需要提及不改变\uuuu name\uuuuuuuuuuu
——我在下面的评论中为你做了这件事<代码>;)
导入
对一个类进行初始化并给它一个不同的本地名称,就像这样并不会改变实际的类对象。i、 e.print(LibKClass.\uu name\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。另外,模块名(以及相应的文件名)应该全部是小写的(根据),因此我建议在示例代码中避免使用它们(因为这可能会给新手带来错误的想法)。@martineau:好的,我将在这里将它们重命名为lib_k
和lib_l
。我想提一下,\uu name\uuuuuuuuu
保持不变的事实,但决定在这一点上停止。托雷克:那更好……而且你不需要提及不改变\uuuu name\uuuuuuuuuuu
——我在下面的评论中为你做了这件事<代码>;-)