Стандарт Python (PEP) имя неизвестного экземпляра класса при вызове функции - PullRequest
0 голосов
/ 24 августа 2018

У меня есть вопрос о передовых практиках в 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, а затем вызывает функцию do_something foo.py, чтобы изменить значение x экземпляра foo.

#! /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, где это описано (если оно есть).Кроме того, я задаю этот вопрос в предположении, что есть стандарт, просто скажите мне, если нет, и тогда я закрою этот вопрос (так как тогда это был бы субъективный вопрос).

1 Ответ

0 голосов
/ 24 августа 2018

Поскольку вы управляете свойством (ями) экземпляра класса 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...