函数调用中未知类实例的 Python 标准 (PEP) 名称

标签 python python-3.x oop

我有一个关于 Python OOP 最佳实践的问题,特别是命名约定。

我有一个 foo.py (模块?)文件,其构造如下:

class Foo(object):
    def __init__(self, x):
        self.x = x

# The question is about the below line
def do_something(master):
    try:
        master.x += 1
    except AttributeError:
        pass

main 模块实例化 foo,然后调用 foo.pydo_something 函数来更改foo 实例的 x 值。

#! /usr/bin/env python
import foo

self = foo.Foo(1)
foo.do_something(self)

print(self.x)

我的问题是关于do_something函数,其中变量现在被称为master,是人们所期望的或者应该以不同的方式编写它(也许像下面的变体)?

def do_something(object):
    try:
        object.x += 1
    except AttributeError:
        pass

如果有人有 PEP 相关部分的链接(如果有的话),我将不胜感激。此外,我问这个问题的假设是存在一个标准,只要告诉我是否没有,然后我将结束这个问题(因为这将是一个主观问题)。

最佳答案

因为您正在操作 Foo 类实例的属性,所以我只需将其设为类方法即可:

class Foo(object):
    def __init__(self, x):
        self.x = x

    def do_something(self):
        """
            increments self.x
        """

        try:
            self.x += 1
        except AttributeError:
        # I think this should never happen.
            pass

然后你这样调用它:

foo = Foo(6)
foo.do_something()
print(foo.x)

关于函数调用中未知类实例的 Python 标准 (PEP) 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52005640/

相关文章:

database - 对象数据库的优点和缺点是什么?

delphi - 我什么时候应该在 Delphi 中使用增强的记录类型而不是类?

oop - 在 R5 引用类中定义类方法和类变量

python - 使用 pathlib 重命名文件扩展名(python 3)

python - 如何指定正则表达式不匹配的内容

python - 使用包含列表 Python 的字典过滤 DataFrame 的 2 列

python - Django 评论垃圾邮件过滤器

python-3.x - 在每个请求的行数和 HTTP header 中的总行数有限的情况下循环通过 PYTHON API 调用?

python - 在 3 个较小的图像旁边显示一个大图像

python - 检查对象是否是 Python 2 和 3 中的文件