10月9日面向对象的小结

面向对象的小结

为什么要有面向对象:

最本质的提供可扩展性

类与对象:

程序中必须先有类,再有对象

类中有属性,有方法

class Person:
    #类属性
    school='object'
    #对象的绑定方法
    def __init__(self):
        pass
    

当我有对象后的代码

class Person:
    #类属性
    school='object'
    #对象的绑定方法,初始化方法完成对象的初始化
    #特殊之处,类实例化对象的时候自动调用
    def __init__(self,name,age):
        self.name=name
        self.age=age
#实例化对象
p=Person('junwan',16)

对于修改的注意事项:

对象不能修改类属性

类属性只能类来改

一切皆对象

首先对象是有自己的属性和方法,在python中几乎所有东西都可以被视为对象,因为它们都有自己的属性和方法。

一切皆对象还有一个可以体现的地方,假设我现在写了一个模块然后我调用

我需要创建一个新的py文件先命名为A,然后用import来使用

如图

绑定方法

定义在类内部,没有装饰器装饰的方法都是对象的绑定方法

需要对象来调用,对象调用的时候,会把自身传入

对象交互

对象之间的交互是指不同对象之间通过方法调用、属性访问等方式进行信息传递和协作,以实现特定的功能或完成任务

继承

继承的主要作用:减少代码冗余

# 这里A继承了object类这个概念所以它是新式类
class A(object):
    print('你继承了我的东西')


# B继承了A这个类
class B(A):
    pass  # 这里的pass没有什么用

继承的查找顺序(新式类,经典类)

广度优先和深度优先

在子类中调用父类的方法

指名道姓

# 子类中调用父类的方法
class fulei:  # 生成一个父类
    def __init__(self, name, tizhong):
        self.name = name
        self.tizhong = tizhong


class Anmin:  # 生成一个动物类
    def __init__(self, name, tizhong):
        fulei.__init__(self, name, tizhong)


dog = Anmin('修勾', 1)  # 实例化生成一个动物对象
print(dog.name)  # 输出该对象的其中一个属性

super(类名,对象).父类的方法名() super严格按照mro列表查找

#super方法
class fulei:
    def __init__(self, name, age):
        self.name=name
        self.age=age
class student(fulei):
    school='wanxi'
    def __init__(self,name,age,course):
        super().__init__(name,age,)
        self.course=course

stu=student('nick',19,'english')
print(stu.name)

派生

派生也叫派生类(也称为子类或者衍生类)在面向对象编程中具有重要的意义,它们主要用于以下

1.代码重用

2.继承和多态

3.抽象和封装

4.扩展性和灵活性

5.分层结构

多态和多态性

多态性是多态的一种体现

多态是概念

多态性

class anmial:  # 定义一个动物类
    pass


class Cat(anmial):  # 属于动物类的另一种形态:猫
    def speak(self):
        print('miao')


class Dog(anmial):# 属于动物类的另一种形态:狗
    def speak(self):
        print('wang')


def diaoyong(anmial):  # 这里可以利用函数来调用动物内的方法
    anmial.speak()


dog1 = Dog()#实例化一只狗
diaoyong(dog1)#利用函数选择需要的实例对象来调用它的方法
cat = Cat()#实例化一只猫
diaoyong(cat)#利用函数选择需要的实例对象来调用它的方法

鸭子类型:不用父类强制约束,人为约束

鸭子类型是一种动态类型的概念,通常用于编程语言中。它的核心思想是“如果它看起来像鸭子,走起路来像鸭子,那么它就是鸭子”。

封装

组合也是封装的一种,同时封装具有隐藏属性和方法的特点

用 _ _ 放在属性或者方法前面:能把属性和方法隐藏

隐藏属性是为了安全

隐藏方法为了隔离复杂度

propetory方法

把方法包装成数据属性

修改和删除如下

@方法名.setter

@方法名.deleter

classmethod方法

类的绑定方法

将类里面的方法变成类的绑定方法

staticmethod方法

静态方法(非绑定方法)

将类里面的方法变成静态方法,就相当于变成了普通函数,类和对象都可以直接调用

posted @   scxlzb  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示