Python 中的方法参数[重复]

2024-03-13

假设我有这样的代码:

class Num:
    def __init__(self,num):
        self.n = num
    def getn(self):
        return self.n
    def getone():
        return 1
myObj = Num(3)

print(myObj.getn()) # result: 3

但如果我尝试print(myObj.getone()),我收到错误:'getone()' takes no arguments (1 given).

所以我替换:

def getone():
    return 1

with

def getone(self):
    return 1

Now print(myObj.getone()) shows 1,正如预期的那样。但 -getone()不需要任何参数就可以return 1。我必须使用毫无意义的论证吗?


在Python中:

  • 实例方法:要求self争论。
  • 类方法:将类作为第一个参数。
  • 静态方法:不需要实例(self)或类(cls) 争论。

__init__是一个特殊函数并且不能覆盖__new__它将始终被赋予类的实例作为其第一个参数。

使用内置 classmethod 和 staticmethod 装饰器的示例:

import sys

class Num:
    max = sys.maxint

    def __init__(self,num):
        self.n = num

    def getn(self):
        return self.n

    @staticmethod
    def getone():
        return 1

    @classmethod
    def getmax(cls):
        return cls.max

myObj = Num(3)
# with the appropriate decorator these should work fine
myObj.getone()
myObj.getmax()
myObj.getn()

也就是说,我会尝试使用@classmethod/@staticmethod节约地。如果您发现自己创建的对象只包含staticmethod更Pythonic 的做法是创建一个相关函数的新模块。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 中的方法参数[重复] 的相关文章

  • 视频背景和按钮 - 移动

    我已经建立了this app http finnfrotscher pythonanywhere com on Flask 目前没有移动支持 由于视频加载时间相当长 因此我希望在手持设备上打开页面时提供相同的视频 但具有不同的分辨率 剪辑和
  • 使用 scikit-image 去模糊图像

    我正在尝试使用skimage restoration wiener http scikit image org docs dev api skimage restoration html skimage restoration wiener
  • OpenGL 说“from_param 收到了一个不连续的数组”

    安装 Yosemite 后 我必须升级 numpy PyOpenGL 等 现在 以前运行的程序给了我以下堆栈跟踪 file latebind pyx line 44 in OpenGL accelerate latebind Curry c
  • Selenium find_elements_by_css_selector 返回一个空列表

    我正在尝试选择包含以下内容的所有 idcoupon link关键字与以下脚本 from selenium import webdriver from selenium webdriver common keys import Keys dr
  • 带权重的欧几里得距离

    我目前正在使用SciPy计算欧氏距离 dis scipy spatial distance euclidean A B 在哪里 A B是5维位向量 现在工作正常 但是如果我为每个维度添加权重 是否仍然可以使用 scipy 我现在拥有的 sq
  • Python——“对象布局”

    有人可以描述以下异常吗 什么是 对象布局 以及它是如何定义的 谢谢 Traceback most recent call last File test gui py line 5 in
  • 使用嵌套 C++ 类和枚举的优点和缺点?

    使用嵌套公共 C 类和枚举的优点和缺点是什么 例如 假设您有一个名为printer 并且此类还存储输出托盘上的信息 您可以 class printer public std string name enum TYPE TYPE LOCAL
  • Python:在 Plotly 中的图形上方创建注释空间

    我想在图中创建额外的注释空间 请参阅附图中的绿色区域 目前 y 轴定义了绘图的高度 我可以将绘图推到超出 y max 限制 在某个点 在图像中标记为红色 之后隐藏 y 轴吗 我尝试避免轴到达 评论部分 绿色 谢谢你 在此输入图像描述 htt
  • 无法获取POST参数

    我正在使用 WebApp2 作为框架在 Python 中开发一个 Web 应用程序 我无法获取通过填写表单提交的http POST请求参数 这是我创建的表单的 HTML 代码
  • 无法在python中使用selenium打开IE

    我正在 Windows 10 计算机 Internet Explorer 11 python 3 6 selenium 3 4 3 和 IEDriverServer 3 5 上运行 我正在尝试使用以下代码打开 IE from seleniu
  • 长异常链的优雅替代方案? [复制]

    这个问题在这里已经有答案了 很多时候我发现自己写的东西看起来像这样 try procedure a except WrongProcedureError try procedure b except WrongProcedureError
  • 在测试中检查 CLI 的退出代码

    我正在为命令行工具编写自动化测试 本质上 我想使用各种选项调用 CLI 并测试退出代码和 或输出 我的测试如下所示 from mymodule cli tool import main def test args capfd with py
  • Python在虚拟环境中找不到包

    我正在尝试为项目设置环境 但 python 无法找到我使用 pip 安装的模块 我做了以下事情 mkdir helloTwitter cd helloTwitter virtualenv myenv Installing setuptool
  • 如何使用 python 将威布尔分布拟合到数据?

    我正在寻找使用 Python 3 4 找到最适合一组数据的威布尔参数 import scipy stats as ss list1 list2 for x in range 0 10 list1 append ss exponweib pd
  • 使用日期作为窗口函数实现 RANGE

    从 SQLAlchemy 1 4 25 开始 没有内置支持 所以我尝试使用该解决方案here https stackoverflow com a 69606048 11277108 这是我的复制 from datetime import d
  • 如何像 urllib 这样的模拟/存根 python 模块

    我需要测试一个需要使用 urllib urlopen 它也使用 urllib urlencode 查询外部服务器上的页面的函数 服务器可能宕机 页面可能发生变化 我不能依赖它进行测试 控制 urllib urlopen 返回内容的最佳方法是
  • 获取 QComboBox 的所有项目 - PyQt4 (Python)

    我有很多QComboBoxes 在某个时刻 我需要获取特定的每个项目QComboBox迭代 虽然我只能有一个与中的项目相对应的项目列表QComboBox 我宁愿直接从小部件本身获取它们 有大量的QComboBoxes每个都有很多项目 有没有
  • 如何在Python中使用JWK解码JWT令牌

    我正在开发一个应用程序 其中所有 API 都受 OAuth 保护 我已从客户端收到访问令牌 但无法解码和验证令牌 我有以下格式的 JWK keys kty RSA x5t S256 Some value e Some Value x5t S
  • SQLAlchemy - 如何从 ResultProxy 访问列名并写入 CSV 标题

    我正在尝试使用 SQLAlchemy 建立与 PostgreSQL 数据库的连接 执行 SQL 查询并将文件的输出打印到 Linux 中的文件中 from sqlalchemy import create engine import yam
  • 获取具有最高属性值的对象的最佳方式

    我有以下学生对象的多维数组 var students name Jack age NYN attempts 3 wrong 2 name Phil age NNNY attempts 4 wrong 3 name Tom age attem

随机推荐