封装
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())