我有一个关于 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.py
的 do_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/