python的多型
阿新 • • 發佈:2022-03-18
- 多型現象【+】【len】
# 【+】
num1 = 1
num2 = 2
print(num1+num2) # 3
str1 = "Python"
str2 = "Programming"
print(str1+" "+str2) # Python Programming
# 【len】
print(len("nhooo")) # 5
print(len(["Python", "Java", "C"])) # 3
print(len({"Name": "John", "Address": "Nepal"})) # 2
- 類方法中的多型
cat1 = Cat("Kitty", 2.5) dog1 = Dog("Fluffy", 4) for animal in (cat1, dog1): animal.make_sound() animal.info() animal.make_sound() 建立了兩個類Cat和Dog。它們具有相似的結構,並具有相同的方法名稱info()和make_sound()。 但是,請注意,我們還沒有建立公共的超類或以任何方式將這些類連結在一起。即使這樣,我們也可以將這兩個不同的物件打包到一個元組中,並使用一個公共animal變數對其進行迭代。由於多型性,這是允許的。
- 方法重寫
from math import pi class Shape: def __init__(self, name): self.name = name def area(self): pass def fact(self): return "我是一個二維的形狀。" def __str__(self): return self.name class Square(Shape): def __init__(self, length): super().__init__("Square") self.length = length def area(self): return self.length**2 def fact(self): return "正方形的每個角都是90度。" class Circle(Shape): def __init__(self, radius): super().__init__("Circle") self.radius = radius def area(self): return pi*self.radius**2 a = Square(4) b = Circle(7) print(b) # Circle print(b.fact()) # 我是一個二維的形狀。 print(a.fact()) # 正方形的每個角都是90度。 print(b.area()) # 153.93804002589985 在這裡,我們可以看到在父類中使用了諸如__str __()之類的未在子類中重寫的方法。 由於多型性,Python直譯器自動識別出物件a(Square類)的fact()方法被重寫。它使用了在子類中定義的那個。 另一方面,由於物件b的fact()方法沒有被重寫,因此可以從Parent Shape類中使用它。