che*_*run 5 python static-methods
我有以下命名简化类Password.py
中folder1
:
import random
CHARS = "ABC"
class PasswordHelper(object):
@staticmethod
def generateChars(length):
return ''.join(random.choice(CHARS) for x in range(length))
Run Code Online (Sandbox Code Playgroud)
现在我有另一个类TestClass.py
中folder2
:
sys.path.append('../folder1/')
import Password
class Tester:
def whatever(self):
print Password.generateChars(3)
def main():
x = Tester()
x.whatever()
# call main method
main()
Run Code Online (Sandbox Code Playgroud)
调用时python TestClass.py
我得到以下错误:AttributeError:'module'对象没有属性'generateChars'.两个文件夹都在同一级别.导入类文件或使用静态方法声明本身的方式有问题吗?
Python不是Java.
首先,Tester或Password类绝对没有意义.如果您没有存储状态,则不要定义类.制作两者whatever
并generateChars
进入正常的独立功能.
但是,假设您只是为了了解Python类,您还没有理解类不等于Python中的模块.由于您已导入Password
模块,因此仍需要引用PasswordHelper
该类:
Password.PasswordHelper.generateChars(3)
Run Code Online (Sandbox Code Playgroud)
或者,您可以导入PasswordHelper类:
from Password import PasswordHelper
...
PasswordHelper.generateChars(3)
Run Code Online (Sandbox Code Playgroud)
最后,请按照PEP8了解您的模块,类和函数名称.