首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >python:如何将类函数结果赋值给同一个类中的类变量

python:如何将类函数结果赋值给同一个类中的类变量
EN

Stack Overflow用户
提问于 2018-07-31 02:56:04
回答 3查看 2.4K关注 0票数 1

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

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

示例代码:

代码语言:javascript
复制
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()

错误:

代码语言:javascript
复制
    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
EN

回答 3

Stack Overflow用户

发布于 2020-09-16 21:29:06

如果你需要在一个类中存储变量,你可能需要一个带双下划线的初始化函数__init__。并且在‘self _var’前面需要一个类。这意味着变量已经成为类的一部分。此外,在“class_member”函数前面还需要一个self。这意味着该函数属于这个类。

代码语言:javascript
复制
class Example:
    def __init__(self):
        self.class_member()

    def class_member(self):
        dict_1 = {'k1' : 'v1','k2' : 'v2'}
        self.class_var = dict_1
代码语言:javascript
复制
e = Example()
代码语言:javascript
复制
print(e.class_var) #prints {'k1': 'v1', 'k2': 'v2'}
票数 1
EN

Stack Overflow用户

发布于 2018-07-31 03:28:38

在这里你的类的使用有很多问题。出现错误1是因为您在类定义中声明了class_member()接受'self',这是对您尚未创建的类的当前实例的引用。出现错误2是因为'self‘已传递给class_member(),就像它是一个变量一样。错误3很可能是因为类定义不在需要它的文件中。

代码语言:javascript
复制
    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

票数 0
EN

Stack Overflow用户

发布于 2018-07-31 03:53:06

实现此目的的另一种方法是使Example类具有dict_1属性,然后在class_member函数中返回它。

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51600523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档