python - 将变量传递给不同的类
问题描述
我有一个有两个功能的类。我正在尝试传递user_input
给CreateDirectory.createDir()
,但我收到此错误NameError: name 'genDir' is not defined
。如何将user_input
变量传递给CreateDirectory.createDir()
?
我的代码如下:
class CreateDirectory():
def genDir(name,x=0):
while True:
dir_name = (name + (' ' + str(x) if x is not 0 else '')).strip()
if not os.path.exists(dir_name):
os.mkdir(dir_name)
return dir_name
else:
x = x + 1
def createDir(dir):
genDir(dir)
class PyShell(Cmd):
global default_shell_prompt
default_shell_prompt = ("Shell > ")
prompt = (default_shell_prompt)
def do_exit(self,inp):
PyShellFunc.clearScr()
sys.exit(0)
def do_mkdir(self,inp):
prompt = (default_shell_prompt + "mkdir > ")
running = True
while running:
global user_input
user_input = input(prompt)
if user_input == ("exit"):
running = False
prompt = (default_shell_prompt)
else:
try:
os.mkdir(user_input)
except:
CreateDirectory().createDir()
解决方案
您在这里有三个选择:1)将此函数定义为对象的方法 2)将它们定义为类的方法 3)作为静态方法
1) 作为对象的方法
class CreateDirectory():
def genDir(self, name,x=0):
while True:
dir_name = (name + (' ' + str(x) if x is not 0 else '')).strip()
if not os.path.exists(dir_name):
os.mkdir(dir_name)
return dir_name
else:
x = x + 1
def createDir(self, dir):
self.genDir(dir)
2)作为类的方法
class CreateDirectory():
@classmethod
def genDir(cls, name,x=0):
while True:
dir_name = (name + (' ' + str(x) if x is not 0 else '')).strip()
if not os.path.exists(dir_name):
os.mkdir(dir_name)
return dir_name
else:
x = x + 1
@classmethod
def createDir(cls, dir):
cls.genDir(dir)
3) 静态方法
class CreateDirectory():
@staticmethod
def genDir(name,x=0):
while True:
dir_name = (name + (' ' + str(x) if x is not 0 else '')).strip()
if not os.path.exists(dir_name):
os.mkdir(dir_name)
return dir_name
else:
x = x + 1
@cstaticmethod
def createDir(dir):
CreateDirectory.genDir(dir)
推荐阅读
- css - 似乎无法让两个 div 彼此相邻
- regex - 正则表达式:删除双引号字段中的换行符?
- authentication - 如何从自定义 Web api 使用身份验证 SharePoint O365
- ios - 在 deleteItems 之后停止 UICollectionView 更新布局
- python - 如何修复最后一层形状的不一致“检查目标时出错:预期dense_的形状为xx,但数组的形状为yy”
- python - 我收到“请求发布配置文件,但 WebEnginePage 仍未删除。期待麻烦!” 当 PyQt5 应用程序退出时
- appium - 我正在尝试测试 android 应用程序的登录场景并验证 toast 消息
- python - 按钮单击未在 tkinter 上注册(已关闭)
- html - Sass:“.divTable-100%”之后的无效 CSS:预期的占位符名称,是“”
- xml - 如何将新的 xml 节点插入到空的父节点?