Передать атрибут в метод класса - PullRequest
0 голосов
/ 06 августа 2020

Как передать атрибут class методу class, чтобы атрибут был изменен?


class foo:
    def __init__(self):
        self.diamond = 1
        self.gold = 10
        self.change(self.diamond)
        self.change(self.gold)
    def change(self, x):
        x+=1
model = foo()
print(model.diamond)

вывод: 1

I хочу diamond становится 2.

Ответы [ 2 ]

1 голос
/ 06 августа 2020

Это хорошее решение для вас?

class foo:
    def __init__(self):
        self.diamond = 1

    def change(self):
        self.diamond += 1

model = foo()
model.change()
print(model.diamond)
0 голосов
/ 06 августа 2020

Позвольте мне сначала сказать, что в вашем примере нет метода класса или переменной класса. У вас есть переменные экземпляра и методы экземпляра, обратите внимание на ключевое слово self. Теперь, с учетом сказанного, вы можете получить доступ и изменить свои переменные экземпляра из любого метода экземпляра, точно так же, как @Almog ответил ранее.

x в вашем методе change является локальной переменной, в основном это не доступны вне вашего метода. Что касается того, как вы изменяете переменную, передавая ее функции, я думаю, это невозможно с вашим кодом. Вам понадобится что-то вроде dataclass, которое вы можете изменить. Ознакомьтесь с концепциями PassByValue и PassByReference, относящимися к этому. Может быть, кто-нибудь из присутствующих сможет помочь в вашей конкретной ситуации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...