簡體   English   中英

Python Inheritance - 將用戶輸入的值從父母傳遞給孩子 class

[英]Python Inheritance - Carrying a user inputted value from parent to child class

class Tax():

    def __init__(self,user_pre_tax, after_federal_tax_amount):
        self.user_pre_tax = user_pre_tax
        self.after_federal_tax_amount = after_federal_tax_amount
    def basic_information():
        federal_tax_rate = 0.10
        user_name = (input("Enter name: "))
        user_pre_tax = (int(input("Enter pre tax amount: ")))
        federal_tax_amount = user_pre_tax * federal_tax_rate
        after_federal_tax_amount = user_pre_tax - federal_tax_amount
        print ("Federal Tax Amount: ", federal_tax_amount)

class OregonTax(Tax):
    def __init__(self,user_pre_tax, after_federal_tax_amount):
        super().__init__(user_pre_tax, after_federal_tax_amount)
    def OregonTax():
        oregon_tax_rate = 0.03
        oregon_tax_amount = Tax.user_pre_tax * oregon_tax_rate
        after_oregon_tax_amount = Tax.after_federal_tax_amount - oregon_tax_amount
        print ("Oregon Tax Amount: ", oregon_tax_amount)

class WashingtonTax(Tax):
    def __init__(self,user_pre_tax, after_federal_tax_amount):
        super().__init__(user_pre_tax, after_federal_tax_amount)
    def OregonTax():
        wa_tax_rate = 0.04
        wa_tax_amount = Tax.user_pre_tax * wa_tax_rate
        after_oregon_tax_amount = Tax.after_federal_tax_amount - wa_tax_amount
        print ("Oregon Tax Amount: ", wa_tax_amount)


example1 = OregonTax
OregonTax.basic_information()
OregonTax.OregonTax()

我正在嘗試將“after_federal_tax_amount”從父項傳遞給子項 class。由於它是用戶輸入的值,我認為我不能將它放在 init 中。 否則,當我最后初始化 class 時,我需要輸入一個值作為它的參數。

我想知道如何解決這個問題。

首先,您的類結構存在很多問題。 在 function OregonTax 中,您正在嘗試訪問Tax.user_pre_taxTax.after_federal_tax_amount ,而對於抽象 class 實際上它們都不存在,但僅存在於每個實例中,如果您希望能夠像那樣訪問它們需要在每個 class 實例的init function 之外分配這些值。 但我真的看不出這樣做的目的,因為你已經為俄勒岡和華盛頓類創建了這樣的屬性,如果你將 self 傳遞給 OregonTax function,你將能夠通過調用 self.after_federal_tax_amount 來訪問它並且沒有特別需要以任何方式訪問父 class。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM