初识python中的类与对象

简介: 类的概念与定义在生活中,我们走在路边,看到一辆车,大脑中首先想到的是“这是一辆车,然后才是这是一辆什么牌子的车”,在这里,我们就用到了编程中的类的概念。同样的,看到一条小狗,也会先想到这是一条狗,然后会想到这是一条什么品种的狗。

类的概念与定义

在生活中,我们走在路边,看到一辆车,大脑中首先想到的是“这是一辆车,
然后才是这是一辆什么牌子的车”,在这里,我们就用到了编程中的类的概念。
同样的,看到一条小狗,也会先想到这是一条狗,然后会想到这是一条什么品种的狗。

在编程中,把同一类的事物叫做类,把这个类里所共有的特征总结归纳并定义出来,就是类的属性;
把这个类能会做什么事,能做什么事总结归纳并定义出来就是类的技能。
举个例子:

我想定义一个人的类,在python里面要怎么实现呢,
首先,我们会想到人都有什么共同的特征呢?人都有两只眼睛,都有两条腿,等等这些是每个人都有的自己的特征,
其次,每个人还都拥有自己的独有特征,每个人的姓名都不是一样的,每个人还都有自己的年龄,自己的性别,自己的学历等等这些是每个人的独有特征
最后,人都有的技能还包括吃饭,睡觉,行走,学习等,这些是人都具有的技能

那个现在我们这可以定义人的类,具体实现代码如下:

class Person:
    """class是定义类的关键字,class后面的P erson是类的名字,python解释器会把class这个关键字后面的名称设定为类的名字,类的名字默认首字母大写。"""
    #定义每个人都有两个眼睛
    eye=2
    #定义每个人都有两条腿
    leg=2
    def __init__(self,name,age,sex,education):
        """定义每个人的独有的特征,此处定义每个人都有自己的姓名,年龄,性别和学历"""
        self.name=name
        self.age=age
        self.sex=sex
        self.education=education
    def eat(self):
        #定义人都有的吃饭的技能
        print("%s is eating food"%self.name)
        
    def walk(self):
        #定义人都有的行走的技能
        print("%s is walking slow"%self.name)
        
    def study(self):
        #定义人都有的学习的技能
        print("%s is studying hard"%self.name)  

执行上面的代码,python解释器会在内存中开辟出一块内存空间,用来保存类中定义的人类的特征和技能

在上面的代码里,定义人类共有的特征时,相当于在人这个类的名称空间中定义了两个变量,定义人独有的特征时,相
当于是在人类的名称空间里,声明了一个名叫“初始化”的函数,在函数中存放代表了每个人独有的特征的变量

而接下来的三个函数则用来表示每个人都会做的动作,python解释器同样会为这三个函数在存放人类的名称空间的内存中开辟三块区域用来存放这三个函数(也可以称之为人类共有的技能

对象的概念与定义

在编程的世界里,定义出一个类之后,我们就可以用这个类生成一个个的人,这个过程我们也称之为类的实例化,生成之后的人我们则称之为对象。

现在我想用上面的程序实例化出两个人,要怎样实现呢??

person1=Person("jack",22,"male","college")
person2=Person("lily",18,"female","middle school")

这样我们就实例化出两个人:

第一个人名字叫jack,22岁,性别为男,大学学历,

第二个个名字叫lily,18岁,性别为女,中学学历。

对象的使用

现在我们已经创建出了两个人,现在可以调用这两个人的特征和技能了
比如,我想知道person1的特征,可以使用如下方法:

print(person1.name)         #查看person1的名字,输出为:jack
print(person1.age)          #查看person1的年龄,输出为:22
print(person1.sex)          #查看person1的性别,输出为:male
print(person1.education)    #查看person1的学历,输出为:college

查看person1的技能时:

person1.walk()      #调用person1的行走的技能
    会打印:jack is walking slow
person1.eat()       #调用person1的吃饭的技能
    会打印:jack is eating food
person1.study()     #调用person1的学习的技能
    会打印:jack is studying hard

查看person2的特征和技能时使用同样的方法

类与对象的对比分析

print(Person.eat,person1.eat,person2.eat)
执行结果如下:
<function Person.eat at 0x0000000002951BF8>
<bound method Person.eat of <__main__.Person object at 0x000000000295D240>
<bound method Person.eat of <__main__.Person object at 0x000000000295D278>>

分别调用类的吃饭的方法,以及person1和person2的吃饭的方法,可以看到它们的内存地址都不一样,同样的,调用他们的
其他的走路和学习的方法,它们各自的内存空间也都不一样,这充分说明了它们在内存中是各自开辟了一段自己的独有的内存空间。

目录
相关文章
|
25天前
|
安全 大数据 程序员
Python operator模块的methodcaller:一行代码搞定对象方法调用的黑科技
`operator.methodcaller`是Python中处理对象方法调用的高效工具,替代冗长Lambda,提升代码可读性与性能。适用于数据过滤、排序、转换等场景,支持参数传递与链式调用,是函数式编程的隐藏利器。
74 4
|
16天前
|
缓存 供应链 芯片
电子元件类商品 item_get - 商品详情接口深度分析及 Python 实现
电子元件商品接口需精准返回型号参数、规格属性、认证及库存等专业数据,支持供应链管理与采购决策。本文详解其接口特性、数据结构与Python实现方案。
|
2月前
|
安全 JavaScript Java
Python中None与NoneType的真相:从单例对象到类型系统的深度解析
本文通过10个真实场景,深入解析Python中表示“空值”的None与NoneType。从单例模式、函数返回值,到类型注解、性能优化,全面揭示None在语言设计与实际编程中的核心作用,帮助开发者正确高效地处理“无值”状态,写出更健壮、清晰的Python代码。
196 3
|
2月前
|
Python
解决Python中AttributeError:'image'对象缺少属性'read_file'的问题策略。
通过上述策略综合考虑,您将能够定位问题并确定如何解决它。记住,Python社区很庞大,也很乐于帮助解决问题,因此不要害怕在求助时提供尽可能多的上下文和您已经尝试过的解决方案。
81 0
|
6月前
|
Python
解决Python报错:DataFrame对象没有concat属性的多种方法(解决方案汇总)
总的来说,解决“DataFrame对象没有concat属性”的错误的关键是理解concat函数应该如何正确使用,以及Pandas库提供了哪些其他的数据连接方法。希望这些方法能帮助你解决问题。记住,编程就像是解谜游戏,每一个错误都是一个谜题,解决它们需要耐心和细心。
288 15
|
6月前
|
安全 测试技术 开发者
Python中的“空”:对象的判断与比较
在Python开发中,判断对象是否为“空”是常见操作,但其中暗藏诸多细节与误区。本文系统梳理了Python中“空”的判定逻辑,涵盖None类型、空容器、零值及自定义对象的“假值”状态,并对比不同判定方法的适用场景与性能。通过解析常见误区(如混用`==`和`is`、误判合法值等)及进阶技巧(类型安全检查、自定义对象逻辑、抽象基类兼容性等),帮助开发者准确区分各类“空”值,避免逻辑错误,同时优化代码性能与健壮性。掌握这些内容,能让开发者更深刻理解Python的对象模型与业务语义交集,从而选择最适合的判定策略。
206 5
|
6月前
|
人工智能 Python
[oeasy]python083_类_对象_成员方法_method_函数_function_isinstance
本文介绍了Python中类、对象、成员方法及函数的概念。通过超市商品分类的例子,形象地解释了“类型”的概念,如整型(int)和字符串(str)是两种不同的数据类型。整型对象支持数字求和,字符串对象支持拼接。使用`isinstance`函数可以判断对象是否属于特定类型,例如判断变量是否为整型。此外,还探讨了面向对象编程(OOP)与面向过程编程的区别,并简要介绍了`type`和`help`函数的用法。最后总结指出,不同类型的对象有不同的运算和方法,如字符串有`find`和`index`方法,而整型没有。更多内容可参考文末提供的蓝桥、GitHub和Gitee链接。
131 11
|
9月前
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
375 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
7月前
|
存储 C语言 Python
[oeasy]python077_int类型怎么用_整数运算_integer_进制转化_int类
本文主要讲解了Python中`int`类型的应用与特性。首先回顾了`int`词根的溯源,探讨了整型变量的概念及命名规则(如匈牙利命名法)。接着分析了整型变量在内存中的存储位置和地址,并通过`type()`和`id()`函数验证其类型和地址。还介绍了整型变量的运算功能,以及如何通过`int()`函数将字符串转化为整数,支持不同进制间的转换(如二进制转十进制)。此外,文章提及了关键字`del`的使用场景,对比了Python与C语言中`int`的区别,并总结了整型与字符串类型的差异,为后续深入学习奠定基础。
121 1
|
10月前
|
存储 数据处理 Python
Python如何显示对象的某个属性的所有值
本文介绍了如何在Python中使用`getattr`和`hasattr`函数来访问和检查对象的属性。通过这些工具,可以轻松遍历对象列表并提取特定属性的所有值,适用于数据处理和分析任务。示例包括获取对象列表中所有书籍的作者和检查动物对象的名称属性。
207 2

推荐镜像

更多