13_类和对象
封装
class Turtle: head = 1 eyes = 2 leg = 4 shell = True def crawl(self): print("人们总抱怨我动作慢吞吞的,殊不知如不积跬步,无以至千里的道理。") def run(self): print("虽然我行动很慢,但如果遇到危险,还是会夺命狂奔的。") def bite(self): print("人善被人欺,龟善被人骑,我可是会咬人的!") def eat(self): print("谁知盘中餐粒粒皆辛苦,吃的好,不如吃的饱") def sleep(self): print("Zzzzz....") t1 = Turtle() print(t1.head) t1.sleep() t1.bite() t1.crawl() t1.eat() t1.run() print(t1.leg)
继承
class A: x = 520 def hello(self): print("你好,我是A~") # B继承A class B(A): pass b = B() print(b.x) b.hello() # 判断一个对象是否属于某个类 True print(isinstance(b, A)) class B: x = 880 y = 250 def hello(self): print("B") # C同时继承A,B,当A,B中都有相同的方法或者变量时,先访问A里面的,A没有再访问B中的 class C(A, B): pass c = C() # 520 print(c.x) # 你好,我是A~ print(c.hello()) # 250 print(c.y) --------------------------------------------- class C: x = 100 def set_x(self, v): self.x = v c = C() c.set_x(250) # 输出的结果为250 print(c.x) # 输出的结果为100 print(C.x) # 输出的结果说明c.set_x(250)只是改变了set_x()函数的内部,并没有改变C的值 -----------------------------------------------------------
构造函数 __init__
class C: def __init__(self, x, y): self.x = x self.y = y def add(self): return self.x + self.y def mul(self): return self.x * self.y c = C(2, 3) print(c.add()) print(c.mul())
重写
class D(C): def __init__(self, x, y, z): C.__init__(self, x, y) self.z = z def add(self): return C.add(self) + self.z def mul(self): return C.mul(self) * self.z d = D(2, 3, 4) print(d.add()) print(d.mul())
砖石继承S
class A(): def __init__(self): print("进入A…") print("离开A…") class B(A): def __init__(self): print("进入B…") super().__init__() print("离开B…") class C(A): def __init__(self): print("进入C…") super().__init__() print("离开C…") class D(B, C): def __init__(self): print("进入D…") super().__init__() print("离开D…") d = D() # 进入D… # 进入B… # 进入C… # 进入A… # 离开A… # 离开C… # 离开B… # 离开D…
多态
class Shape: def __init__(self, name): self.name = name def area(self): pass class Square(Shape): def __init__(self, length): super().__init__("正方形") self.length = length def area(self): return self.length * self.length class Circle(Shape): def __init__(self, radius): super().__init__("圆形") self.radius = radius def area(self): return self.radius * self.radius * 3.14 class Triangle(Shape): def __init__(self, base, height): super().__init__("三角形") self.base = base self.height = height def area(self): return self.base * self.height / 2 s = Square(5) c = Circle(6) t = Triangle(3, 4) print(s.name) print(c.name) print(t.name) print(s.area()) print(c.area()) print(t.area())
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律