从教程:"类定义是一个可执行语句."
以下是脚本中推荐的内容吗?
my_switch = False
if my_switch:
class Hello:
def __init__(self):
self.greeting = "Hello!"
else:
class Hello:
def __init__(self):
self.greeting = "Salut!"
Run Code Online (Sandbox Code Playgroud)
Rad*_*ski 10
你甚至可以这样做
class Hello:
def __init__(self):
self.greeting = "Hello!"
class Salut:
def __init__(self):
self.greeting = "Salut!"
if my_switch:
Hello = Salut
Run Code Online (Sandbox Code Playgroud)
(请注意,您的代码需要小写的Class关键字...)
正如您的示例所示,当然不建议进行本地化。
需要考虑的主要问题是,在该类的专门版本中,有多少代码是相似的,有多少是不同的。如果只有少量代码不同,或者只有数据不同(“Hello”与“Salut”),则有更好的方法。
我可能会考虑类的条件声明的一种情况是,如果我在两个不同的操作系统上提供功能,并且获得该功能在两者之间有很大不同。举个例子,也许我正在尝试从脚本驱动 iTunes,在 MacOS 上我使用 AppleScript 来驱动它,但在 Windows 上我必须使用 COM。我可能会创建一个包装类,我的代码的其余部分可以使用它,而无需关心正在使用哪个操作系统。
您还可以在类内部的“声明”周围放置条件,因为它们是作为类构造的一部分执行的:
class Hello:
if my_switch:
igreeting = "Hello!"
else:
igreeting = "Salut!"
def __init__(self, greeting):
self.greeting = self.igreeting
Run Code Online (Sandbox Code Playgroud)
(这里的问候是类变量,问候的是成员变量)
或者只是简单的
class Hello:
if my_switch:
greeting = "Hello!"
else:
greeting = "Salut!"
Run Code Online (Sandbox Code Playgroud)
...通常会产生相同的效果。
如果你更喜欢它,你可以将每个类定义放在一个单独的.py文件中,而只是import你想要的那个.类似于以下内容:
if my_switch:
from hello_en import Hello
else:
from hello_fr import Hello
h = Hello()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6230 次 |
| 最近记录: |