tft每日頭條

 > 生活

 > python帶示例

python帶示例

生活 更新时间:2025-01-18 20:08:44

python帶示例?python中 in 操作用來判斷一個對象是否在另一個對象内,比如 1 in [1,2,3] 結果是True那如果是我們自己創建的對象,怎麼支持 in 操作呢,比如判斷一個點是否在一個方形内?,接下來我們就來聊聊關于python帶示例?以下内容大家不妨參考一二希望能幫到您!

python帶示例(python實現自定義34)1

python帶示例

python中 in 操作用來判斷一個對象是否在另一個對象内,比如 1 in [1,2,3] 結果是True。那如果是我們自己創建的對象,怎麼支持 in 操作呢,比如判斷一個點是否在一個方形内?

這種情況就需要我們自己定義 in 操作符了,其實也簡單,隻需要定義一個__contains__就可以了。

比如我們有以下兩個類,一個代表坐标點,一個代表方形:

class Point: def __init__(self, x, y): self.x = x self.y = y class Rectangle: def __init__(self, x, y, width, height): self.x = x self.y = y self.width = width self.height = height

如果我們直接執行以下語句就會報錯,因為python默認的 in 操作不适用于這兩個對象:

p1 = Point(2, 2) p2 = Point(4, 2) r = Rectangle(0, 0, 3, 3) print(p1, "in", r, ":", p1 in r) print(p2, "in", r, ":", p2 in r)

那讓我們定義一個__contains__方法來實現 in 操作,如下代碼:

class Point: def __init__(self, x, y): self.x = x self.y = y def __str__(self): return f"Point({self.x}, {self.y})" class Rectangle: def __init__(self, x, y, width, height): self.x = x self.y = y self.width = width self.height = height def __contains__(self, point): if type(point) != Point: raise Exception(f"Unsupport 'in' operator for operand '{type(point)}'") if self.x <= point.x <= self.x self.width and self.y <= point.y <= self.y self.height: return True else: return False def __str__(self): return f"Rectangle({self.x}, {self.y}, {self.width}, {self.height})" p1 = Point(2, 2) p2 = Point(4, 2) r = Rectangle(0, 0, 3, 3) print(p1, "in", r, ":", p1 in r) print(p2, "in", r, ":", p2 in r)

運行代碼輸出如下:

Point(2, 2) in Rectangle(0, 0, 3, 3) : True Point(4, 2) in Rectangle(0, 0, 3, 3) : False

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved