Python: How do I make a subclass from a superclass?

后端 未结 11 1768
日久生厌
日久生厌 2020-11-29 19:01

In Python, how do you make a subclass from a superclass?

相关标签:
11条回答
  • 2020-11-29 19:15

    In the answers above, the super is initialized without any (keyword) arguments. Often, however, you would like to do that, as well as pass on some 'custom' arguments of your own. Here is an example which illustrates this use case:

    class SortedList(list):
        def __init__(self, *args, reverse=False, **kwargs):
            super().__init__(*args, **kwargs)       # Initialize the super class
            self.reverse = reverse
            self.sort(reverse=self.reverse)         # Do additional things with the custom keyword arguments
    

    This is a subclass of list which, when initialized, immediately sorts itself in the direction specified by the reverse keyword argument, as the following tests illustrate:

    import pytest
    
    def test_1():
        assert SortedList([5, 2, 3]) == [2, 3, 5]
    
    def test_2():
        SortedList([5, 2, 3], reverse=True) == [5, 3, 2]
    
    def test_3():
        with pytest.raises(TypeError):
            sorted_list = SortedList([5, 2, 3], True)   # This doesn't work because 'reverse' must be passed as a keyword argument
    
    if __name__ == "__main__":
        pytest.main([__file__])
    

    Thanks to the passing on of *args to super, the list can be initialized and populated with items instead of only being empty. (Note that reverse is a keyword-only argument in accordance with PEP 3102).

    0 讨论(0)
  • 2020-11-29 19:18
    class Subclass (SuperClass):
          # Subclass stuff here
    
    0 讨论(0)
  • 2020-11-29 19:21
    class MySubClass(MySuperClass):
        def __init__(self):
            MySuperClass.__init__(self)
    
            # <the rest of your custom initialization code goes here>
    

    The section on inheritance in the python documentation explains it in more detail

    0 讨论(0)
  • 2020-11-29 19:21
    class Mammal(object): 
    #mammal stuff
    
    class Dog(Mammal): 
    #doggie stuff
    
    0 讨论(0)
  • 2020-11-29 19:22

    Subclassing in Python is done as follows:

    class WindowElement:
        def print(self):
            pass
    
    class Button(WindowElement):
        def print(self):
            pass
    

    Here is a tutorial about Python that also contains classes and subclasses.

    0 讨论(0)
  • 2020-11-29 19:29
    class BankAccount:
    
      def __init__(self, balance=0):
        self.balance = int(balance)
    
      def checkBalance(self): ## Checking opening balance....
        return self.balance
    
      def deposit(self, deposit_amount=1000): ## takes in cash deposit amount and updates the balance accordingly.
        self.deposit_amount = deposit_amount
        self.balance += deposit_amount
        return self.balance
    
      def withdraw(self, withdraw_amount=500): ## takes in cash withdrawal amount and updates the balance accordingly
        if self.balance < withdraw_amount: ## if amount is greater than balance return `"invalid transaction"`
            return 'invalid transaction'
        else:
          self.balance -= withdraw_amount
          return self.balance
    
    
    class MinimumBalanceAccount(BankAccount): #subclass MinimumBalanceAccount of the BankAccount class
    
        def __init__(self,balance=0, minimum_balance=500):
            BankAccount.__init__(self, balance=0)
            self.minimum_balance = minimum_balance
            self.balance = balance - minimum_balance
            #print "Subclass MinimumBalanceAccount of the BankAccount class created!"
    
        def MinimumBalance(self):
            return self.minimum_balance
    
    c = BankAccount()
    print(c.deposit(50))
    print(c.withdraw(10))
    
    b = MinimumBalanceAccount(100, 50)
    print(b.deposit(50))
    print(b.withdraw(10))
    print(b.MinimumBalance())
    
    0 讨论(0)
提交回复
热议问题