原标题:Python基础(小白教程)之面向对象

Python的类

> 在这门语言中,类使用 class 语句来定义。在类中包含了一系列语句,比如赋值语句,def 定义函数等。从面向对象的角度看,类封装了对象的行为和数据。**在Python的类中变量就是对象的数据,函数就是对象的行为**,函数也成为方法。

Python中的对象

> 在Python的对象模型中,有两种对象:类对象和实例对象。类对象是用 class 语句创建的,而实例对象是在调用类的时候创建的。所以类对象只有一个,而实例对象可以有多个。

> 类对象

>

> - 执行 class 语句创建一个类对象和一个变量;

> - 类中的赋值语句创建的变量是类的数据属性,在类中的顶层赋值语句创建的变量才属于类属性;

> - 类中定义的 def 语句的函数是类的方法属性;

> - 类的数据和方法和所有实例对象共享。

> 实例对象

>

> - 实例对象通过调用类对象来创建;

> - 每个实例对象继承类对象的属性,并获得自己的命名空间;

> - 实例对象可以拥有“私有”属性。类的方法函数的第一个参数默认为 self,表示引用方法的对象实例。在方法中地域 self 的属性赋值才会创建术语实例对象的属性

[^]: *摘自《python3基础教程》侵删 。这个是本文作者看了诸多教材后,从中对比出最简单理解的一版。肯定还是很枯燥,但如果是零基础的读者还是要硬着头皮看完再看后面的内容。*

定义类

基本格式如下代码:

```python

class Student: #创建了一个名为Student的类,我们约定类的首字母大写。

data = 200 #在此,我们定义了类的属性.

def set_name(self,name): #用def语句定义了类的方法

self.name = name

def show_name(self):

return self.name

print("类Student创建完成")

```

调用类

```python

type(Student) #首先我们检查一下我们类的类型,返回type

Student.data #调用了类的属性,返回200

Student.set_name() #试图调用类的方法,会直接报错。类的方法并不能直接调用,只能通过实例对象调用。

```

```python

#正确调用类方法的姿势如下:

banji1 = Student() #创建一个实例对象banji1

banji1.set_name("amy") #传入参数

banji1.show_name() #调用方法,显示实例对象属性值,返回'amy'

banji2 = Student() #创建另一个实例对象banji2

banji2.set_name('tom') #传入参数

banji2.show_name() #调用方法,显示实例对象属性值,返回'tom'。从这可看出,实例对象属性之间没有什么关系。

banji1.data,banji2.data #返回(200, 200),访问了共享属性

```

对象的属性

在Python中,实例对象继承了类对象的所有属性和方法,可以用dir()函数查看

```python

dir(Student)

dir(banji1)

#这个代码返回信息太长,可以自行运行查看一下。以双下划綫开头结尾的变量名术语内置属性,最后我们可以看到来自Student类对象的data、set_name、show_name三个属性。

```

共享属性

类对象的数据属性是全局的,改变类对象的属性,实例对象引用时也会被改变。实例对象的数据属性更改不影响其他实例对象或者类对象。

```python

banji3 = Student() #创建Student的实例对象,并用banji3引用该对象

banji4 = Student() #创建Student的实例对象,并用banji4引用该对象

print(Student.data,banji3.data,banji4.data) #返回200 200 200

Student.data = 100 #改变全局变量属性

print(Student.data,banji3.data,banji4.data) #返回100 100 100,实例对象属性跟随改变

banji3.data = 400 #更改实例变量的data属性赋值

print(Student.data,banji3.data,banji4.data) #返回100 400 100,实例对象属性改变,不影响他人

```

实例对象可以拥有私有属性

“私有”强调属性只属于当前实例对象,对其他实例对象是不可见的。

```python

banji5 = Student() #创建Student的实例对象,并用banji5引用该对象

# banji5.set_name() #试图访问实例对象的属性,结果报错显示并不存在

banji5.set_name("john") #调用类的对象方法为属性赋值

banji5.show_name() #返回"john"

```

类的私有属性

如果想要类的方法或者属性成为私有的,不能通过实例对象引用,只需要在期名称以两个下划线开头即可。如下例:

```python

class Secret:

def __invisible(self):

print("you can't see")

def visible(self):

print("what you can not see is:")

self.__invisible()

#这样创建,我们就不能从外部访问__invisible,但是可以通过invisible访问

s = Secret()

# s.__invisible() #试图从外部访问,直接报错

s.visible() #访问成功,返回what you can not see is: you can't see

#其实,在类定义中,所有以两下划线开头的名称都被进行了转化,就是加了个下划线和类名

dir(Secret) #用dir查看,我们发现列表中有'_Secret__invisible',知道这个以后,我们可以从外部访问类的私有对象了

s._Secret__invisible() #成功返回you can't see。但这中操作并不正规

```

魔法函数**init**

又名构造函数,在调用类创建实例对象时自动被调用,不需要手动调用。

```python

class Boy(object):

def __init__(self):

#方法,用来做变量初始化或赋值操作,在类实例化对象的时候,会被自动调用

self.name = "yyg"

self.height = "180"

self.weight = "170"

def info(self):

print("我叫{},身高{},体重{}".format(self.name,self.height,self.weight))

def show(self):

"""实例方法"""

print("你的嘤嘤怪以上线")

boyfriend = Boy()

# 只需要调用实例方法info(),即可获取数据

boyfriend.info() #返回我叫yyg,身高180,体重170

boyfriend.show() #返回你的嘤嘤怪以上线返回搜狐,查看更多

责任编辑:

python定义一个student类、有下面的_Python基础(小白教程)之面向对象相关推荐

  1. python定义一个student类、有下面的_Python的类和方法——成员可见性

    我们继续接着类和对象这个话题聊. 1.类方法 使用装饰器@classmethod.第一参数必须是当前类对象,该参数名一般约定为「cls」,当然cls也可以换成其他名字,通过它来传递类的属性和方法(不能 ...

  2. python定义一个student类_从零开始学Python-Day38-类和实例

    原标题:从零开始学Python-Day38-类和实例 面向对象编程中最重要的概念就是类(Class)和实例(Instance),其中"类"是抽象的模板,"实例" ...

  3. 虚函数之定义一个基类Shape,在此基础上派生出Rectangle和Circle再使用Rectangle类创建一个派生类Square。

    定义一个基类Shape,在此基础上派生出Rectangle和Circle,二者都有getArea( )函数计算对象的面积,再使用Rectangle类创建一个派生类Square.将getArea()改造 ...

  4. python定义一个学生类姓名、年龄、性别、成绩、你成绩评价_.定义一个学生类Student,包含三个属性姓名、年龄、性别,创建三个学生对象存入ArrayList集合中。...

    3.定义一个学生类Student,包含三个属性姓名.年龄.性别,创建三个学生对象存入ArrayList集合中. A:遍历集合遍历输出. B:求出年龄最大的学生,让后将该对象的姓名变为:王者荣耀. pa ...

  5. python定义一个dog类 类属性有名字毛色体重_面向对象实践,练习,Python

    1.定义一个汽车类(Car),属性有颜色,品牌,车牌号,并实例化两个对象 2.定义一个球员类(Player),属性有身高.体重.姓名,实例化两个球员,分别是姚明和科比 3.定义一个僵尸类(Zombie ...

  6. python定义一个dog类 类属性有名字_python 基础 12 初识类,类方法,类属性

    python 基础 12 初识类,类方法,类属性 # 面向过程 : 想要一个结果 写代码 实现计算结果 # 面向对象开发 : 有哪些角色 角色的属性和技能 两个角色之间是如何交互的 # 复杂的 拥有开 ...

  7. python定义一个dog类 类属性有名字毛色体重_全面了解python中的类,对象,方法,属性...

    python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象...... 我们通过描述属性(特征)和行为来描述一个对象的.比如家里的小狗, ...

  8. python定义一个复数类complex、并实现复数相加_用java定义一个复数类Complex,能够创建复数对象,并且实现复数之间的加、减运算...

    题目: 用java定义一个复数类Complex,能够创建复数对象,并且实现复数之间的加.减运算 复数具有实部和虚部两部分,如2+5i就是一个复数,其中2为实部,5i为虚部;两复数相加时,实部与实部相加 ...

  9. 用python定义一个员工类_python类的定义和使用

    类的定义: 类是用来描述具有相同的属性和方法的对象的集合.它定义了该集合中的每个对象所共有的属性和方法.对象时类的实例. 二.Python创建类: 使用class语句来创建一个新类,class之后为类 ...

最新文章

  1. linux管理磁盘和文件系统
  2. node.js发送邮件
  3. ML之K-means:基于DIY数据集利用K-means算法聚类(测试9种不同聚类中心的模型性能)
  4. PMCAFF产品经理社区原创专栏,产品圈的干货看这儿就够了
  5. Matlab练习:timer(定时器3)
  6. [翻译]Windows Vista的秘密#11: 删除不可删除的东西
  7. “元宇宙”究竟是什么
  8. golang 导入自定义包_二、Go基本命令及定制自定义第三方包
  9. [转载] 聚类算法总结
  10. Autolayout屏幕适配——代码实现(苹果公司 / VFL语言 / 第三方框架Masonry)
  11. 对于原型链的彻底理解
  12. python getopt使用_如何使用getopt.getoptpython中的方法?
  13. centos7 卸载service服务
  14. photoshop 前端切图基础教程
  15. 联想拯救者Y7000关闭触摸板
  16. 华为eSight网络监控平台配置短信功能说明
  17. js 字符串 常用方法
  18. 华科智标_停车场定位导航反向寻车系统
  19. windows的Alt键一直处于按下状态,解决,亲测有用
  20. WBS 及 WBS字典

热门文章

  1. 一款功能强大的代理检查和IP地址轮转工具
  2. 服务器信息更新是什么意思,正在联系iphone软件更新服务器是什么意思?怎么解决?...
  3. 初创公司Humane获1亿美元融资:投资方包括OpenAI CEO
  4. 让微信 8.0 「裂开」「炸弹」的特效代码来了(转)
  5. SPSS进行一阶差分
  6. strchr函数的实现
  7. 只是一个没有AI的单机版象棋
  8. pca针对初学者_针对初学者和专家的12酷数据科学项目创意
  9. 中国大学MOOC-人工智能实践:Tensorflow笔记-课程笔记 Chapter6
  10. STM32高级定时器TIM1、TIM15输出PWM