Как использовать Python (3.81) с Anaconda в Sublime Text 3 - PullRequest
0 голосов
/ 10 января 2020

Я работал в Sublime Text 3 над упражнением из учебника Python Cra sh, посвященного родительским и дочерним классам, и столкнулся с проблемой с функцией super() при попытке построить / запустить мою программу

Я использую систему сборки Conda (Anaconda) для сборки своих программ. Я получаю ошибку трассировки с функцией super() при запуске моей программы с Conda:

Traceback (most recent call last):
  File "/Users/watchmen1/Desktop/python_work/Chapter 9/ice_cream_stand.py", line 61, in <module>
    braums = IceCreamStand('Braums')
  File "/Users/watchmen1/Desktop/python_work/Chapter 9/ice_cream_stand.py", line 52, in __init__
    super().__init__(restaurant_name, cuisine_type)
TypeError: super() takes at least 1 argument (0 given)
[Finished in 0.0s with exit code 1]
[cmd: ['python', '-u', '/Users/watchmen1/Desktop/python_work/Chapter 9/ice_cream_stand.py']]
[dir: /Users/watchmen1/Desktop/python_work/Chapter 9]
[path: /usr/bin:/bin:/usr/sbin:/sbin]

Тем не менее, я не получаю эту проблему, когда я запускаю ее только с обычным Python 3 сборки системы, и я понимаю, что, по крайней мере, в Python 3 функция super() не требует аргумента при ее использовании для соединения родительского и дочернего классов.

Я предполагал, что Anaconda работал как Python 3, когда использовал его в качестве системы сборки. Однако, поскольку в сообщении об ошибке говорится, что мне нужно ввести аргумент, мне интересно, действительно ли он работает как Python 2.7 или как-то еще, поскольку моя книга отмечает, что в python 2.7 функция super() требует аргументов .

Я могу использовать Python 3 в качестве системы сборки, но, учитывая, что я планирую использовать Anaconda в будущем, я надеялся, что смогу выяснить, что происходит.

class Restaurant():
    """ An attempt to model a restaurant."""

    def __init__(self, restaurant_name, cuisine_type):
        """Initialize restaurant name and cuisine type."""
        self.restaurant_name = restaurant_name
        self.cuisine_type = cuisine_type
        self.number_served = 0

    def describe_restaurant(self):
        """Simulate a sentance naming the restaurant and giving its cuisine type."""
        print(self.restaurant_name.title() + " is a restaurant that serves " + self.cuisine_type.title() + " food.")

    def open_restaurant(self):
        """Simulate a sentance announcing the restaurant is open."""
        print(self.restaurant_name.title() + ", is now open!")

    def set_number_served(self, customers_served):
        """Set the number of people served at a #restaurant."""
        self.number_served = customers_served


    def increment_number_served(self, customers):
        """Add selected amount of customers to the total number served."""
        self.number_served += customers


# restaurant = Restaurant('Shake Shack', 'Americana')

#print(restaurant.resturant_name.title())
#print(restaurant.cuisine_type.title())

# restaurant.describe_resturant()
# #print("")
# restaurant.open_resturant()
# print("\nNumber Served: " + str(restaurant.number_served))
# print("")

# #restaurant.number_served = 20
# restaurant.set_number_served(20)
# print("Number Served: " + str(restaurant.number_served))

# print('')

# restaurant.increment_number_served(22)
# print("Number Served: " + str(restaurant.number_served))

class IceCreamStand(Restaurant):
    """Create child class of restaurant that represents an Ice Cream Stand."""
    def __init__(self, restaurant_name, cuisine_type='ice_cream'):
        """Initialize attributes of the parent class."""
        super().__init__(restaurant_name, cuisine_type)
        self.flavors = []

    def show_flavors(self):
        """Display the list of flavors the Ice Cream Stand offers."""
        print("\nThis Ice Cream Stand offers the following flavors: ")
        for flavor in self.flavors:
            print("\t- " + flavor.title())

braums = IceCreamStand('Braums')
braums.flavors = ['Chocolate', 'Vanilla', 'Sherbert']

braums.describe_restaurant()
braums.show_flavors()
...