簡體   English   中英

Python 在類中設置變量類型

[英]Python set variables types inside class

我正在嘗試為我的類變量設置可接受的內置類型。 如果給定的類型不正確,我想拋出異常。 有沒有比帶 isinstance() 的 setter 更好的方法?

我的第一次嘗試:

class Address:
    city: str
    building_number: str or int
    apartment_number: int
    street: str

    def __init__(self, city, building_number, apartment_number, street):
        self.city = city
        self.building_number = building_number
        self.apartment_number = apartment_number
        self.street = street

不幸的是,無論類型如何,它都會編譯。

我的第二次嘗試:

class Address:
    def __init__(self, city: str, building_number: str, apartment_number: int, street: str):
        self.city = city
        self.building_number = building_number
        self.apartment_number = apartment_number
        self.street = street

這個在創建類時實際上顯示了錯誤的類型,但它編譯時不會拋出任何錯誤或消息。

在此處輸入圖片說明

在此處輸入圖片說明

isinstance() 是一種安全的方法,但如果您只想輸入更少,您可以使用由“+”運算符完成的類型檢查,如下所示

class Address:
    city: str
    building_number: str or int
    apartment_number: int
    street: str

    def __init__(self, city:str, building_number:str, apartment_number:int, street:str):
        self.city = "" + city
        self.building_number = "" + building_number
        self.apartment_number = 0 + apartment_number
        self.street = "" + street

x = Address(1, "a", "b", "c")

堆棧跟蹤消息很有意義:

Traceback (most recent call last):
  File "test.py", line 14, in <module>
    x = Address(1, "a", "b", "c")
  File "test.py", line 9, in __init__
    self.city = "" + city
TypeError: must be str, not int

我試過這個,我沒有得到任何錯誤:

class Address:
    def __init__(self, city: str, building_number: str, apartment_number: int, street: str):
        self.city = city
        self.building_number = building_number
        self.apartment_number = apartment_number
        self.street = street

a = Address(1, "asassa", "shoudbeanint", "asas")

print (a.city)
print (a.apartment_number)

暫無
暫無

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

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