静态方法的正确使用

2024-09-30 02:20:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我在folder1中有以下名为Password.py的简化类:

import random                                                                    

CHARS = "ABC"

class PasswordHelper(object):                                                  
    @staticmethod                                                                          
    def generateChars(length):                                                    
       return ''.join(random.choice(CHARS) for x in range(length))

现在我在folder2中有另一个类TestClass.py

^{pr2}$

当调用python TestClass.py时,我得到以下错误:AttributeError:“module”对象没有属性“generateChars”。两个文件夹位于同一级别。我导入类文件的方式或静态方法声明本身有问题吗?在


Tags: pyimportobjectdefrandompasswordlengthclass
2条回答

你也需要在类中定义一个函数名,所以你也需要一个类的引用:

print Password.PasswordHelper.generateChars(3)

或者,将函数移出类定义的,此时根本不需要使用@staticmethod

^{pr2}$

在Python中,函数不属于类定义的一部分。在

Python不是Java。在

首先,无论是测试人员还是密码类,都绝对没有意义。如果不存储状态,则不要定义类。使whatevergenerateChars成为正常的独立函数。在

但是,假设您这样做只是为了了解Python类,那么您还不明白在Python中类不等于模块。既然您已经导入了Password模块,您仍然需要引用PasswordHelper类:

Password.PasswordHelper.generateChars(3)

或者,可以导入PasswordHelper类:

^{pr2}$

最后,请按照PEP8获取模块、类和函数名。在

相关问题 更多 >

    热门问题