Python 入门 之 初识面向对象_python 数据挖掘 面向对象编程实例-程序员宅基地

技术标签: python  编程语言  数据挖掘  

1、初识面向对象编程 (核心–对象)

(1)观察以下代码:

# 面向过程编程
s = "alexdsb"
count = 0
for i in s:
    count += 1
print(count)

s = [1,2,7,3,4,5,]
count = 0
for i in s:
    count += 1
print(count)

# 面向对象编程
def my_len(s):
    count = 0
    for i in s:
        count += 1
    print(count)
my_len([1,2,3,4,5])

可得出结论:

面向过程 vs 函数式编程
<1> 函数式编程 减少了重复代码
<1> 函数式编程 提高了代码的可读性高

推荐Python大牛在线分享技术 扣qun:855408893

领域:web开发,爬虫,数据分析,数据挖掘,人工智能

零基础到项目实战,7天学习上手做项目

(2)观察以下代码;

# 面向函数编程
def login():
    pass

def check_buy_goods():
    pass

def change_pwd():
    pass

def shopping():
    pass

def register():
    pass

def check_unbuy_goods():
    pass

# 面向对象编程
class Auth:

    def login(self):
        pass

    def register(self):
        pass

    def change_pwd(self):
        pass

class Shopping:

    def shopping(self):
        pass

    def check_buy_goods(self):
        pass

    def check_unbuy_goods(self):
        pass

可以得出结论:

函数式编程 vs 面向对象
<1> 面向对象 代码结构清晰,可读性高
<2> 面向对象使用 上帝思维

2、面向对象初识:

类:对一些事物的统称和概括 (就是具有相同属性和功能的一类事物)
对象:实实在在存在的东西,具有特征和功能 (就是类的具体表现形式)

3、面向对象结构:

class — 关键字
class 类名: # 类名建议使用驼峰体 函数名建议使用下划线
静态属性(类变量,静态字段)
方法(类方法,动态属性,动态字段)
class People:

    mind = "有思想"  # 静态属性

    def eat(self):   # 方法
        print("在吃饭")

    def work(self):
        print("在工作")

class Dog:

    hair = "毛"   # 静态属性

    def eat(self):
        print("吃食")

    def lick(self):
        print("添水")

4、类角度操作类:

class People:
    mind = "有思想"  # 静态属性

    def eat(self):   # 方法
        print("在吃饭")

    def work(self):
        print("在工作")

(1)_ dict _查看类下所有内容

print(People.__dict__)   # __dict__ 只能查看当前空间下的内容

(2). 万能的点 查看单个属性或方法

print(People.mind)      # 类名.属性名

一般情况我们不使用类名去操作方法(类方法)

(3)增:

People.emotion = "有情感"

(4)删:

del People.mind

(5)改:

People.mind = "无脑"

(6)查:

print(People.mind)  #类名.属性名   单独查一个
print(People.__dict__)    # 查看类下所有的

5、对象角度操作类:

class People:
    mind = "有思想"  # 静态属性

    def eat(self):   # 方法
        print("self --->",self)
        print("在吃饭")

    def work(self):
        print("在工作")

# 创建对象 -- 类名()
p = People()  # 实例化对象
print(p.__dict__)  # 对象的空间
print("p---->",p)
print(p.mind)
p.eat()
p.work()

class People:

    mind = "有思想"        # 静态属性

    def __init__(self,name,age,sex):     # 初始化
        # self == p
        self.name = name
        self.age = age
        self.sex = sex

    def eat(self):         # 方法
        print(self.name)
        print("在吃饭")

    def work(self):
        print("在工作")

p = People("marry",19,"男")       # 实例化一个对象
p.eat()

可以在类的外部给对象创建属性,但不建议这样使用

p.mind = "无脑"  # 给对象创了一个属性
print(People.__dict__)
print(p.__dict__)        # 对象查询对象中所有属性

(1)对象只能使用类中的属性和方法,不能进行修改

(2)实例化一个对象总共发生了三件事:

<1> 实例化一个对象,给对象开辟空间
<2> 自动执行_ init_ 方法
<3> 自动将对象的地址隐性传递给了self

6、self 是什么?

(1)就是函数的位置参数

(2)实例化对象的本身(对象和self指向同一内存地址)

class People:

    mind = "有思想"  # 静态属性

    def __init__(self,name,age,sex,high=None):   # 初始化(给创建的对象封装独有属性)
        # self == p  地址相同
        self.name = name
        self.age = age
        self.sex = sex
        if high:
            self.high = high

    def eat(self):   # 方法
        print(f"{self.name}在吃饭")

    def work(self):
        print("在工作")

p1 = People("jim",19,"未知",170) # 实例化一个对象
p2 = People("kuqir",19,"未知",170) # 实例化一个对象
p3 = People("diva",19,"未知",170) # 实例化一个对象
p4 = People("李玲",19,"未知",170) # 实例化一个对象
p5 = People("好哥",19,"未知",170) # 实例化一个对象

p1.eat()
p2.eat()

7.类空间

(1)给对象空间添加属性:

对象的属性不仅可以在_ _init__里面添加,还可以在类的其他方法或者类的外面添加
class A:

    def __init__(self,name):
        # 类里边给对象添加属性
        self.name = name

    def func(self,sex):
        self.sex = sex

a = A("jim")
a.func("男")
# 类外边给对象添加属性
a.age = 18
print(a.__dict__)

# 总结:给对象空间添加属性可以在类的内部,类的外部,类中的方法

(2)给类空间添加属性:

类的静态属性不仅可以在内部添加,还可以在类的外部添加
class A:

    def __init__(self,name):
        # 类内部给类空间添加属性
        A.name = name

    def func(self,age):
        # 类中的方法给类空间添加属性
        A.age = age

类外部给类空间添加属性
A.name = "alex"
a = A('meet')
a.func(19)
print(A.__dict__)

# 总结:给类空间添加属性可以在类的内部,类的外部,类中的方法

8、面向对象中的查找顺序

对象查找属性的顺序:先从对象空间找 ——> 类空间找——>父类空间找——>·········

类名查找属性的顺序:先从本类空间找 ——> 父类空间找——>······

上面的顺序都是单向不可逆的,类名不可能找到对象的属性。(对象之所以可以找到类,是因为对象空间中有类对象指针这么个东西)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45974643/article/details/103687892

智能推荐

C++编程技巧_c++获取 gcc的target-程序员宅基地

文章浏览阅读534次。这是编译器指令,告诉GCC编译器使用最大优化级别(O3)和循环展开(unroll-loops)进行编译,以提高程序的运行速度optimize这会告诉编译器尽可能地优化代码以提高运行速度,有时候甚至会牺牲浮点数的精度。这里的程序是计算一个整型数组的所有元素的和,然后输出。如果我们将其与没有优化指令的版本比较,可能会在大型数据集或者复杂的计算中看到明显的运行速度的差异。不过在小型程序和简单的计算中,可能看不出明显的区别。_c++获取 gcc的target

体积雾(dx9)-程序员宅基地

文章浏览阅读1.3k次。1.什么是体积雾? 这个问题通过图片来解答再合适不过了,下面是本文利用体积雾做的一个结果 所谓体积雾:顾名思义就是被限制了形状的雾,本文表述如何通过ImageProcess(图象处理)的方式实现体积雾。 2.常规雾原理 雾效最终体现在雾颜色与场景色的混合上。决定雾的浓度的关键就在这个混合因子上_体积雾

网站后台 服务器,网站后台数据 服务器-程序员宅基地

文章浏览阅读584次。网站后台数据 服务器 内容精选换一换华为云云市场搭建了包括基础软件市场、企业应用市场、建站市场、安全市场、服务市场、解决方案市场、人工智能市场、物联网市场8大子市场,种类丰富,产品众多,用户可以在华为云云市场找到适合自己业务的软件/服务。本文主要介绍了如何使用弹性云服务器的Linux实例搭建Magento电子商务系统。Magento是一款开源电子商务系统,设计灵活,具有模块化架构体系和丰富的功能,..._网站后台数据

详解< meta >标签常用的属性及方法_常用meta设置-程序员宅基地

文章浏览阅读1.4k次,点赞51次,收藏52次。`meta`标签在HTML中扮演着至关重要的角色,它能帮助开发者更好地控制网页的呈现方式、提升SEO效果、指导浏览器行为以及其他与网页相关的元数据管理。_常用meta设置

RabbitMq初识_guest user from anywhere on the network-程序员宅基地

文章浏览阅读145次。文章目录一、认识二、安装1.docker安装2. 配置文件2.RabbitMQ的简单指令三、分类1. Direct直连问题:2. Work queue3. Fanout4. Routing4.1 Direct(订阅)4.2 Topic四、SpringBoot整合RabbitMQ一、认识[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TJhBYPKI-1586753..._guest user from anywhere on the network

今天端午节了,哈哈。。。-程序员宅基地

文章浏览阅读425次。今天过端午了,记录一下。。。先从百度入手,百度一篇《【创意Logo】浓浓的端午味儿……》来叙解了一下她的logo。端一盘粽子,呈一枝艾叶,与你一起过——端午。 自多了端午节假日,端午的“节”气立时浓了起来。这也让现时代的人们,体味到了旧时中国的传统意味。农历五月初五,端午。在中国,流传至今的节日“四大名旦”,当属春节、中秋、清明和端午。而这四者中,端午名气相..._csdn 今天端午了哈哈

随便推点

CMTime详解-AVFoundation视频操作必备基础_cmtimemake-程序员宅基地

文章浏览阅读1.1k次。CMTime 对于视频和音频操作比不可少, 第一:CMTimeMake(a,b) a当前第几帧, b每秒钟多少帧.当前播放时间a/b第二:例如CMTimeMake(60, 30); 第二秒CMTimeMake(30, 15);第二秒两个都是代表第二秒的影片但是第一个播放速度是第二个二倍_cmtimemake

关于fastjson 对象转json出现$ref_"fastjson 转的json,\"$ref\":\"$. jsjson.parse("-程序员宅基地

文章浏览阅读781次。 现在微服务、前后分离什么的那么流行,多数新的程序在返数据给前端的时候直接返回json 数据,这样json工具就有用武之地了常用的json工具有 org.json、Gson 、albaba的fastjson。 昨天本来是用fastjson 对象转json了,发现有些重复引用的对象 会如下展示{"$ref":"$.data.list[0].list[34]"} 看着就像是坐标,这..._"fastjson 转的json,\"$ref\":\"$. jsjson.parse("

禾川Q1系列PLC官方教程_禾川学院培训资料-程序员宅基地

文章浏览阅读3.2k次。禾川Q系列PAC教程_禾川学院培训资料

Eclipse详细安装教程_eclipse的安装步骤-程序员宅基地

文章浏览阅读9.3k次,点赞7次,收藏26次。Eclipse安装教程前言一、Eclipse是什么?二、安装步骤1. Eclipse下载下载网址2. Eclipse安装前言Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。一、Eclipse是什么?Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。二、安装步骤1. E_eclipse的安装步骤

计算机组成原理练习题_在底数取16及尾数为二进制的浮点数中,为了保持数值不变,阶码加1,尾数要( )。-程序员宅基地

文章浏览阅读497次,点赞20次,收藏21次。4. (单选题, 7分)计算机问世至今,新型机器不断推陈出新,不管怎样更新,依然保有“存储程序”的概念,最早提出这种概念的是( )。3. (单选题, 5分)在底数取 16及尾数为二进制的浮点数中 , 为了保持数值不变 , 阶码加 1, 尾数小数点要_( )__。2. (单选题, 5分)若浮点数的机器表示中,尾数用补码表示,则判断该浮点数是否为规格化的方法是尾数的最高数值位__( )__。5. (单选题, 5分)x=+0. 1011, y=+0. 0110,用补码运算得到[x-y]补 =___( )__。_在底数取16及尾数为二进制的浮点数中,为了保持数值不变,阶码加1,尾数要( )。

2013年东北c语言考试题答案,2013东北大学c语言试题-程序员宅基地

文章浏览阅读104次。信息学院 2013-2014 学年第 1 学期 程序设计基础 试题 a总分 班 级装一二 30三 24四 26五六七八九十(10) 若有说明语句:int *p,a;则能通过 scanf 语句正确给输入项读入数据 的程序段是_______。 A) *p=&a; scanf(“%d”,p); B) *p=&a; scanf(“%d”,*p); C) p=&a; scanf(“%..._c语言中的数据的类型不同,在内存中占据不同长度的存储单元

推荐文章

热门文章

相关标签