Почему этот класс использует «я» в качестве позиционного аргумента? - PullRequest
1 голос
/ 16 июня 2020

Я написал следующий код для добавления листинга в класс Marketplace, но он выдает ошибку, говоря, что .add_listing() отсутствует один позиционный аргумент, а add_listing принимает self и new_listing в качестве аргументов. . Я попытался удалить self, чтобы посмотреть, что произошло, и возникла еще одна ошибка.

Взгляните:

class Marketplace:
    def __init__(self):
        self.listings = []
    def add_listing(self, new_listing):
        self.listings.append(new_listing)
    def remove_listing(self, listing):
        self.listings.remove(listing)
    def show_listings(self):
        for listing in self.listings:
            print(listing)

class Client:
    def __init__(self, name, location, is_museum):
        self.name = name
        self.location = location
        self.is_museum = is_museum
    def sell_artwork(self, artwork, price):
        if artwork.owner == self:
            listed_artwork = Listing(artwork, price, self)
            veneer.add_listing(listed_artwork)

class Listing:
    def __init__(self, art, price, seller):
        self.art = art
        self.price = price
        self.seller = seller
    def __repr__(self):
        return '{}: {}'.format(self.art.title, str(self.price))

Когда .sell_artwork вызывается на Client, он выдает следующую ошибку:
(veneer является экземпляром Marketplace который я использую в этом коде)

Traceback (most recent call last):   File "script.py", line 45, in <module>
  edytta.sell_artwork(girl_with_mandolin, '$6M (USD)')   
    File "script.py", line 30, in sell_artwork
      veneer.add_listing(listed_artwork) 
        TypeError: add_listing() missing 1 required positional argument: 'new_listing'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...