首页 > 解决方案 > 如何在 Python 中的方法中预设对象变量

问题描述

一个例子:

class User():
    def __init__(self, name, password):
        self.name = name
        self.password = password

    def edit(self, name=self.name, password=self.password): <- ERROR
        self.name = name
        self.password = password

我想像这样编辑对象的名称或密码:

object.edit(password="New password")

随之而来的错误:

undefined variable "self"

我这样做是因为那时我只能编辑一件事,而另一件事仍然是一样的。请帮我!还有其他方法可以做到吗?

标签: pythonpython-3.xclassoopparameters

解决方案


你可以编写你的edit函数来接受关键字参数的字典,这样你就可以知道哪些是给定的,哪些不是。

def edit(self, **kwargs):
    if 'name' in kwargs:
        self.name = kwargs['name']
    if 'password' in kwargs:
        self.password = kwargs['password']

您可以使用 调用它instance.edit(password='newpass'),并且只会更新密码。


推荐阅读