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())
复制代码

 

 
 
posted @   tuyin  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示