[英]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.