Veneer Artwork Marketplace

Hi friends. I am really struggling. I find this happening all too often. I have been unsuccessful in all of the projects and Now I am reaching out for help. I know my code is a mess but at this point I feel as if it is all broken. I try to fix one problem only to make another for myself. If anyone could help me at all I would be eternally grateful.

I cannot get the buy artwork method to work (in the Client class). I think that I am never adding the listing to the new_listings list but I cannot figure out how.

class Art:
  def __init__(self, artist, title, medium, year, owner):
    self.artist = artist
    self.title = title
    self.medium = medium
    self.year = year
    self.owner = owner

  def __repr__(self):
    return("{artist}. {title}. {year}, {medium}, {owner}, {owner_location}.".format(artist = self.artist, title = self.title, year = self.year, medium = self.medium, owner = self.owner.name, owner_location = self.owner.location))


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


class Client:
  def __init__ (self, name, location, is_museum):
    self.name = name
    self.is_museum = is_museum
    if self.is_museum:
      self.location = location
    else:
      self.location = "Private Collection"

  def sell_artwork(self, artwork, price):
    if self == artwork.owner:
      artwork = Listings(artwork.title, price, self)
      veneer.add_listing(artwork)

  def buy_artwork(self, artwork):
    if self != artwork.owner:
      art_listing = None
      for listing in veneer.listings:
        art_listing = listing
      if art_listing != None:
        artwork.owner = self
        veneer.remove_listing(artwork)


class Listings:
  def __init__(self, art, price, seller):
    self.art = art
    self.price = price
    self.seller = seller

  def __repr__(self):
    return("{name}, {price}".format(name = self.art, price = self.price))





veneer = Marketplace()


edytta = Client("Edytta Halpirt", "Private Collection", False)

moma = Client("The MOMA", "New York", True)


girl_with_mandolin = Art("Picasso, Pablo", "\"Girl with a Mandolin (Fanny Tellier)\"", "1910", "oil on canvas", edytta)

edytta.sell_artwork(girl_with_mandolin, "$6M (USD)")
veneer.show_listings()

moma.buy_artwork(girl_with_mandolin)
print(girl_with_mandolin)


veneer.show_listings

What is the purpose of the for loop in this (buy_artwork) function? It seems to go through every listing but it does nothing with those possible listings (only the last element is ever assigned and used later on). How is it supposed to relate to the if statement below?