python:如何将类函数结果分配给同一类中的类变量

时间:2018-07-30 18:56:04

标签: python member-functions class-variables

我是python的初学者,想了解python类模块和类变量。

我只想将类函数的返回值分配给类变量。 我尝试了不同的方法,这些方法在python中有效吗?

示例代码:

class Example():
    def class_member(self):
        dict_1 = {'k1' : 'v1','k2' : 'v2'}
        return dict_1

    class_var = class_member()
    print(class_var)

x_obj =  Example()

错误:

    class_var = class_member()
TypeError: class_member() takes exactly 1 argument (0 given)

    class_var = class_member(self)
NameError: name 'self' is not defined

    class_var = Example.class_member()
NameError: name 'Example' is not defined

3 个答案:

答案 0 :(得分:1)

此处的班级使用存在许多问题。发生错误1的原因是,在类定义中您已经声明class_member()接受“ self”,这是对您尚未创建的类的当前实例的引用。发生错误2是因为将'self'传递给class_member()就像是一个变量一样。错误3很可能是由于类定义不在所需的文件中引起的。

    class Example(): 
        def __init__ (self):
            self.dict_1 = {'k1' : 'v1','k2' : 'v2'} 

        def class_member (self): 
            return self.dict_1

    my_object = Example()
    class_var = my_object.class_member()
    print(class_var)

请确保下次再次检查Python文档。 https://docs.python.org/3/tutorial/classes.html

答案 1 :(得分:0)

另一种实现方法是创建Example类的dict_1属性,然后在class_member函数中将其返回。

class Example():
  dict_1 = {'k1' : 'v1','k2' : 'v2'}
  def class_member(self):
    return self.dict_1

example = Example()

print(example.dict_1) # prints {'k1': 'v1', 'k2': 'v2'}
print(example.class_member()) # prints {'k1': 'v1', 'k2': 'v2'}

我建议仔细阅读link,并仔细阅读。

答案 2 :(得分:0)

如果需要将变量存储在类中,则可能需要初始化函数__init__,并且在其相对两侧带有双下划线。并且您将需要在“ class_var”前面加上一个self。这将意味着该变量已成为该类的一部分。而且,您还需要在'class_member'函数前面使用self。这将意味着该函数属于此类。

class Example:
    def __init__(self):
        self.class_member()

    def class_member(self):
        dict_1 = {'k1' : 'v1','k2' : 'v2'}
        self.class_var = dict_1
e = Example()
print(e.class_var) #prints {'k1': 'v1', 'k2': 'v2'}