Skip to main content
 首页 » 编程设计

python之从 Python 类返回所有类变量值

2025年05月04日16langtianya

我有一个包含所有 AWS 区域的 Python 类。我写了一个类方法,它会返回所有地区的列表。有没有更好的方法来返回所有类变量值,这样我就不必像我在下面的示例中那样对返回语句中的所有值进行硬编码?

class AwsRegion(): 
    ''' 
    Class to define AWS Regions 
    ''' 
    OHIO = 'us-east-2' 
    NORTH_VIRGINIA = 'us-east-1' 
    NORTH_CALIFORNIA = 'us-west-1' 
    OREGON = 'us-west-2' 
    MUMBAI = 'ap-south-1' 
    SEOUL = 'ap-northeast-2' 
    SINGAPORE = 'ap-southeast-1' 
    SYDNEY = 'ap-southeast-2' 
    TOKYO = 'ap-northeast-1' 
    FRANKFURT = 'eu-central-1' 
    IRELAND = 'eu-west-1' 
    LONDON = 'eu-west-2' 
    SAO_PAULO = 'sa-east-1' 
 
    @classmethod 
    def all(cls, ): 
        return [AwsRegion.OHIO, AwsRegion.NORTH_VIRGINIA, AwsRegion.NORTH_CALIFORNIA, AwsRegion.OREGON, \ 
            AwsRegion.MUMBAI, AwsRegion.SEOUL, AwsRegion.SINGAPORE, AwsRegion.SYDNEY, AwsRegion.TOKYO, \ 
            AwsRegion.FRANKFURT, AwsRegion.IRELAND, AwsRegion.LONDON, AwsRegion.SAO_PAULO] 

请您参考如下方法:

作为一般引用,您可以通过以下方式获取任何类的属性。
根据您的需要选择:

__dict__ :

将返回所有可写 类属性的字典。这通常是您所需要的。

my_obj = MyClass() 
attributes = my_obj.__dict__ 

vars() :

与 __dict__ 相同的结果,但使用它被认为是最佳实践。

my_obj = MyClass() 
attributes = vars(my_obj) 

dir() :

将返回所有类属性,包括那些不是由您创建但继承自 object 的属性。

my_obj = MyClass() 
attributes = dir(my_obj) 

在您的情况下,使用 vars() 会很好,正如 Martijn Pieters 在他的 answer 中所展示的那样.