首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将参数传递给第一个参数为self的python函数?

如何将参数传递给第一个参数为self的python函数?
EN

Stack Overflow用户
提问于 2017-01-30 19:51:24
回答 5查看 8.5K关注 0票数 5

以下面的简化示例为例。

代码语言:javascript
复制
class A(object):
    variable_A = 1
    variable_B = 2

    def functionA(self, param):
        print(param+self.variable_A)

print(A.functionA(3))

在上面的示例中,我得到了以下错误

代码语言:javascript
复制
Traceback (most recent call last):
  File "python", line 8, in <module>
TypeError: functionA() missing 1 required positional argument: 'param'

但是,如果删除函数声明中的self,则无法访问类中的变量variable_Avariable_B,并得到以下错误

代码语言:javascript
复制
Traceback (most recent call last):
  File "python", line 8, in <module>
  File "python", line 6, in functionA
NameError: name 'self' is not defined

那么,如何在访问类变量的同时不出现param错误呢?我正在使用Python 3仅供参考。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-01-30 19:59:45

您必须首先创建类A的实例

代码语言:javascript
复制
class A(object):
    variable_A = 1
    variable_B = 2

    def functionA(self, param):
        return (param+self.variable_A)


a = A()
print(a.functionA(3))

如果你不想使用实例,你可以使用staticmethod装饰器。静态方法是方法的特例。有时,您会编写属于某个类的代码,但这根本不使用对象本身。

代码语言:javascript
复制
class A(object):
    variable_A = 1
    variable_B = 2

    @staticmethod
    def functionA(param):
        return (param+A.variable_A)

print(A.functionA(3))

另一种选择是使用类方法装饰器。类方法是不绑定到对象而是绑定到类的方法!

代码语言:javascript
复制
class A(object):
    variable_A = 1
    variable_B = 2

    @classmethod
    def functionA(cls,param):
        return (param+cls.variable_A)

print(A.functionA(3))
票数 12
EN

Stack Overflow用户

发布于 2017-01-30 19:54:01

上面代码片段中的functionA是一个实例方法。您不会将"self“直接传递给它。相反,您需要创建一个实例才能使用它。函数的"self“参数实际上就是它被调用的实例。例如:

代码语言:javascript
复制
a = A()
a.functionA(3)

附注:请注意,您的functionA调用了print,但没有返回任何内容,这意味着它隐式返回None。您应该让它返回一个值并从调用方打印它,或者像我上面所做的那样,调用它并让它自己打印。

票数 2
EN

Stack Overflow用户

发布于 2017-01-30 19:53:17

首先创建一个A的对象。

代码语言:javascript
复制
a = A()
a.functionA(3)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41935237

复制
相关文章

相似问题

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