面向对象学习笔记

面向对象学习笔记

文章目录

  • 面向对象学习笔记
    • 1.什么是对象
    • 2.什么是面向对象
    • 3.类和对象的区别
    • 4.以==python==面向对象的实现为例
      • 4.1给对象添加属性
      • 4.2给对象添加行为(方法)
      • 4.3面向对象最重要的三个特性
        • 4.3.1==封装==
        • 4.3.2==继承==
        • 4.3.3==多态==

1.什么是对象

一句话总结就是万物皆对象,无论是大到一个星球还是小到一粒尘埃,他们都是对象。

2.什么是面向对象

以面向过程与面向对象的区别为例,并且假若我要描述我在AL算法组上课的场景。

面向过程

  1. 打开pycharmVScode
  2. 学长学姐开始讲课
  3. 做笔记,敲代码
  4. 总结所学知识。

面向对象

  • 老师:算法组的学长,学姐。
  • 使用工具:pycharmVScode
  • 学习方法:做笔记,敲代码,总结所学知识

3.类和对象的区别

  • 对象是类的示例

比如定义AL骨干成员为一类,那么昕蓓学姐子健学长就是AL骨干成员类的对象

4.以python面向对象的实现为例

4.1给对象添加属性

class Person:

    def __init__(self,name,age):
        self.name = name
        self.age = age

Xiaoming = Person("小明",18)
Xiaohong = Person("小红",19)

print(f"{Xiaoming.name}今年{Xiaoming.age}岁")
print(f"{Xiaohong .name}今年{Xiaohong .age}岁")

小明今年18岁

小红今年19岁

4.2给对象添加行为(方法)

class Circle:
    def __init__(self,radius):
        self.radius = radius
    def s(self):
        s = math.pi*(self.radius)**2
        print(s)
    def c(self):
        c = math.pi * (self.radius) * 2
        print(c)

计算圆的面积
circle1 = Circle(8)
print(circle1.s())

4.3面向对象最重要的三个特性

4.3.1封装

封装的基本思想:

  • 决定属性和行为归属谁的问题,并隐藏对象中一些不希望被外部访问到的属性或方法,确保数据安全

示例:

class Account:
    def __init__(self,password):
        self.__password = password

    def getpsw(self):
        return self.__password

    def __print(self):
        print("不能执行奥")

acc = Account("123456")
print(acc.password)#会报错
print(acc.getpsw())#可以显示password

4.3.2继承

  • 继承的特点:子类继承父类后,就可以得到父类的属性和行为。
  • 继承的核心优点:提高代码的复用性,多个子类的相同代码可以放在父类中,相同的代码不用重复编写。

示例:

class Shape:
    def __init__(self,name):
        self.name = name
    def leixin(self):
        print(self.name,"平面图形")
    def perimeter(self):
        pass

import math
class Circle(Shape):
    def __init__(self,name,radius):
        self.name = name
        self.radius = radius
    def s(self):
        s = math.pi*(self.radius)**2
        print(s)
    def c(self):
        c = math.pi * (self.radius) * 2
        print(c)

class Rectangle(Shape):
    def __init__(self,name,m,n):
        self.name = name
        self.m = m
        self.n = n
    def s(self):
        s = self.m  * self.n
        print(s)
    def c(self):
        c = (self.m  + self.n)* 2
        print(c)

cir = Circle("圆形",8)
rec = Rectangle("矩形",8,4)
cir.leixin()
rec.leixin()
cir.s()
rec.s()

结果:

圆形 平面图形
矩形 平面图形
201.06192982974676
32

4.3.3多态

  • 定义:指对象可以有多种形态
  • 优点:不同的对象调用相同的方法,产生不同的执行结果,增加代码的灵活度
  • 前提:以继承和重写父类方法为前提

示例:

class Shape:
    def __init__(self,name):
        self.name = name
    def leixin(self):
        print(f"{self.name}的类型")

import math
class Circle(Shape):
    def leixin(self):
        print(f"{self.name}是曲面图形")

class Rectangle(Shape):
    def leixin(self):
        print(f"{self.name}是直线图形")


def _Shape(tuxin):
    if isinstance(tuxin, Shape):
        tuxin.leixin()
        tuxin.leixin()

cir = Circle("圆形")
rec = Rectangle("矩形")
_Shape(cir)
_Shape(rec)

输出:

圆形是曲面图形
圆形是曲面图形
矩形是直线图形
矩形是直线图形

你可能感兴趣的:(学习,python,开发语言)