Python:根据变量的值调用类

时间:2015-07-17 18:55:38

标签: python class

基本上我希望此代码执行的操作是将(systemType).clear()替换为unix.clearwindows.clear。这甚至可能吗?

if(platform.system()=="Windows"):
    systemType="windows"
else:
    systemType="unix"

class unix:
    def clear():
        os.system('clear')

class windows:
    def clear():
        os.system('cls')


print("Detecing systemType")
time.sleep(1)
(systemType).clear()

错误为AttributeError: 'str' object has no attribute 'clear'

2 个答案:

答案 0 :(得分:6)

如果将systemType的分配移到类定义之后,您可以为它们分配类而不是它们的名称:

class unix:
    def clear():
        os.system('clear')

class windows:
    def clear():
        os.system('cls')

if platform.system()=="Windows":
    systemType = windows
else:
    systemType = unix

print("Detecing systemType")
time.sleep(1)
systemType.clear()

答案 1 :(得分:0)

import os
if os.name == "nt":
     os.system("cls") #windows
else:
     os.system("clear") #unix