python之面向对象(代码片段)

kaixindexiaocao kaixindexiaocao     2022-12-21     781

关键词:

一、三大编程范式

python是一门面向对象的编程语言。

不同的编程样式有不同的风格,不同的风格有他不同的牛逼之处。

三大编程范式:

  1. 面向过程编程
  2. 函数式编程
  3. 面向对象编程

二、面向对象设计与面向对象编程

面向对象设计(Object oriented design):将一类具体事物数据和动作整合到一起,即面向对象设计

面向对象设计(OOD)不会不会特别要求面向对象语言,事实上,OOD可以由纯结构化语言来实现,比如C,但是如果想要结构具备对象性质和特点的数据结构,就要在程序上多做努力。

技术图片
 1 def Dog(name, gender):
 2     def ini(name, gender):
 3         dog1 = 
 4             "name": name,
 5             "gender": gender,
 6             "jiao": jiao,
 7             "chi": chi,
 8         
 9         return dog1
10     def jiao(dog):
11         print("一条狗 【%s】,汪汪汪"%dog["name"])
12     def chi(dog):
13         print("一条狗 【%s】 正在吃东西"%dog["name"])
14     dog1 = ini(name, gender)
15     return dog1
16 
17 if __name__ == "__main__":
18     d1 = Dog("狗1",5)
19     print(d1)
20     d1["jiao"](d1)
面向对象设计

 

面向对象编程(Object-oriented programing):用定义类+实例/对象的方法去实现面向对象的设计

技术图片
 1 class Dog:
 2     def __init__(self, name, gender):
 3         self.name = name
 4         self.gender = gender
 5     def jiao(self):
 6         print("一条狗 【%s】,汪汪汪" % self.name)
 7     def chi(self):
 8         print("一条狗 【%s】 正在吃东西"%self.name)
 9 if __name__ == "__main__":
10     d1 = Dog("狗1", 3)
11     print(d1)
12     d1.chi()
面向对象编程

四、小结

 一门面向对象的语言不一定强制你写OO方式的程序,例如 C++可以认为是更好的C;而JACA则要求万物皆类

在Python中,类和OOP都不是日常编程所必须的,尽管它从一开始就设计是面向对象的。

用面向对象语言编写程序,和一个程序是面向对象设计的,两者八竿子打不着,是两码事。

五、类和对象

1.什么是类:类是一种数据结构,就好比一个模型,该模型用来表述一类事物。

2.什么是对象:你看到的每一个事物都是一个对象,可以理解对象就是一个具体的事物。

3.类与对象的关系:对象是由类产生的,类是对象的模板。

4.什么是实例化:由类产生对象的过程叫实例化,类实例化的结果就是一个对象,或者叫实例。

5.1 类的相关知识

类的声明:

1 ‘‘‘
2 class 类名:
3     ‘类的文档字符串‘
4     类体
5 ‘‘‘

# 创建一个类
class Data:
  pass
# 用类实例化一个对象
d1 = Data()

 

 金典类和新式类:

大前提:
1.只有在python2中才有新式类和金典类,python3中都是新式类
2.新式类和金典类的最大区别在于,所有新式类继承至少一个父类
3.所有类不管是否声明父类,都默认继承object父类。

在python2中:
金典类:

class 类名:
    pass

新式类:
class 类名(父类):
    pass


python3中,上面连种定义都是新式类。

 

 

类的属性:

  1. 数据属性
  2. 函数属性

注意:类和对象都用 点 类访问自己的属性

class Dog:
    def __init__(self, name, gender):
        self.name = name
        self.gender = gender

    def jiao(self):
        print("一条狗 ,汪汪汪" )

    def chi(self):
        print("一条狗 正在吃东西")


if __name__ == "__main__":
    Dog.jiao(123)
    print(Dog.__dict__)  # 结果是一个字典,包含类的所有属性
    print(dir(Dog)) # 结果是一个列表,包含类的所有属性名

5.2 对象的相关知识

 对象是由类实例化得来的。

实例化:

class Dog:

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

    def jiao(self):
        print("一条狗 【%s】,汪汪汪" % self.name)

    def chi(self):
        print("一条狗 【%s】 正在吃东西" % self.name)


if __name__ == "__main__":
    d1 = Dog("狗1", 3)   # 类名加上括号就是实例化 d1 就是一个实例

5.3 类属性和对象(实例)属性

技术图片
class Dog:
    master = "xioahong"

    def __init__(self, name, gender):

        self.name = name
        self.gender = gender

    def jiao(self):
        print("一条狗 【%s】,汪汪汪" % self.name)

    def chi(self):
        print("一条狗 【%s】 正在吃东西" % self.name)


if __name__ == "__main__":
    # ==================================类属性的增删改查
    # 查看类属性
    print(Dog.master)
    # 修改类属性
    Dog.master = "xiaoming"
    print(Dog.master)
    # 删除类属性
    del Dog.master
    # 增加类属性
    print(Dog.__dict__)
    Dog.master = "me"
    Dog.home = "myhome"
    print(Dog.__dict__)

    # =================================实例属性的增删改查
    d1 = Dog("Dog1",5)
    # 查看
    print(d1.__dict__)
    # 增加
    d1.mather = "小花"
    print(d1.__dict__)
    # 不要通过修改底层字典的字典属性
    # d1.__dict__["father"] = "小草"
    # print(d1.__dict__)

    #
    d1.name = "Dog2"
    print(d1.name)
    # 删除
    del d1.name
    print(d1.__dict__)
类和对象属性

 实例查找属性也是按照区域查找,先找实例自己的,然后才是类的。

 

python之面向对象(代码片段)

首先我们应该知道,python在设计之初就已经是一门面向对象的语言,所以说python中创建一个类和对象是很容易的。面向对象的技术简介类(class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有... 查看详情

学习python之面向对象(代码片段)

学习Python之面向对象python面向对象1.类的定义2.类的实例化3.调用类中的实例方法4.使用实例变量5.类与对象6.类的构造函数7.类变量与实例变量(1).理解类变量与实例变量(2).类变量和实例变量的查找顺序无继承单继承多继承(3).`__... 查看详情

python之面向对象(代码片段)

father类classfather(object):def__init__(self,name,age):self.__privateFatherAge=age;self.publicFatherName=name;#定义共有属性name和私有属性__privateFatherAge=44;publicFatherName='feige';#私有方法访问共有属性def__priv 查看详情

python基础之面向对象基本概念(代码片段)

面向过程和面向对象概念过程和函数:过程类似于函数,只能执行,但是没有返回结果;函数不仅能执行,还能返回结果。面向过程和面向对象基本概念面向过程-怎么做把完成某一个需求的所有步骤从头到尾逐步实现;根据开... 查看详情

python面向对象之多态(代码片段)

多态第一阶段:判断一个变量是否是某个类型可以用isinstance()判断classAnimal(object):defrun(self):print("Animalisrunning")classDog(Animal):defrun(self):print("Dogisrunning")classCat(Animal):defrun(self):print 查看详情

python3之面向对象编程理解(代码片段)

...义类语classAnimal():class为定义类的关键字,后面跟名字():python命名规范建议:类一般首字母单词大写,属性变量,函数首单词字母小写定义一个类叫Animal,相关代码:classAnimal():##类里定义的属性称为类属性count=0##构造函数,实例化的时... 查看详情

python学习笔记之面向对象(代码片段)

一、面向过程VS面向对象 编程范式   编程是程序员用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程,一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所谓条条大路... 查看详情

python基础之面向对象2(封装)(代码片段)

一、封装定义:   二、作用  三、私有成员:  1、基本概念及作用      2、__slots__手段私有成员:      3、@property属性手段私有成员:     四、基础示例代码  1、用方法封装变量    """... 查看详情

python数据结构之面向对象(代码片段)

💫在python数据结构的上一章节我们讲述了python的输入输出、控制、异常,希望大家重点掌握输出和控制,这些都是比较简单的啦,多看看就好了,对以前课程感兴趣的小伙伴可以看这里👇:python数据类型:py... 查看详情

进阶学python:python面向对象系列之魔法方法!(代码片段)

本篇主要介绍面向对象编程中类的魔法属性,这些魔法属性均有其特殊的功能,即执行某些操作时,会自动触发这些魔法方法的执行,了解这些魔法方法可以更好的了解面向对象编程的实现原理;在学习魔法... 查看详情

python面向对象之单例模式(代码片段)

...是相同的;__new__方法__new__作用使用类名()创建对象时,python解释器首先会调用__new_ 查看详情

python--面向对象之三个特性:封装继承多态(代码片段)

...法     obj=类名()     obj.方法名3、self,形参,python内部传递 4、函数式编程与面向对象式编程的区别示例:#!/usr/bin/envpython#-*-coding:utf-8-*-"""面向对象编程初识"""#先定义一个类classHello():#定义一个方法defsayHell(self,name):pri... 查看详情

进阶学python:python面向对象之属性方法(代码片段)

这次我们主要介绍类中定义的各种属性,例如类属性、实例属性、类的私有属性,以及各种方法,例如实例方法、类方法、静态方法以及property属性方法等相关知识。🚀看一段代码classTool(object):dog_type="Huskie&... 查看详情

python面向对象之文件操作(代码片段)

...以用文本编辑软件查看;本质上还是二进制文件;例如:python源文件。二进制文件保存的文件不是直接给人阅读的,而是提供给其他软件使用 查看详情

python之面向对象知识点汇总(小白必会)(代码片段)

目录Python基础之面向对象一、编程思想1、面向过程2、面向对象二、类与对象的创建1、类的语法结构2、定义与调用3、给对象添加独有属性4、对象独有属性修改三、动态、静态方法1、直接在类中定义的函数2、绑定给类的函数3、... 查看详情

面向对象之继承(代码片段)

...种创建新类的方式,新建的类可以继承一个或多个父类(python支持多继承),父类又可称为基类或超类,新建的类称为派生类或子类。子类会“”遗传”父类的属性,从而解决代码重用问题(比如练习7中Garen与Riven类有很多冗余... 查看详情

最新python大数据之python基础学生管理系统面向对象版(代码片段)

文章目录1、在子类中调用父类方法2、多态3、类属性4、类方法5、静态方法6、面向对象案例7、异常捕获8、捕获指定类型的异常9、else和finally10、自定义异常抛出11、模块的导入12、自定义模块13、模块查询顺序14、`__all__`的... 查看详情

面向对象之继承与派生(代码片段)

继承:单继承/多继承python2与python3在继承上的区别:  新式类:但凡继承object类的子类,以及该子类的子子类,...都称之为新式类  经典类:没有继承object类的子类,以及该子类的子子类,...都称之为经典类只有在python2中才区分新式类... 查看详情