Python学习笔记(十)——面向对象

什么是对象

大白话

python中一切内容都可以成为对象,除了数字、字符串、列表、元组、字典、集合、range对象、zip对象等等,函数也属于对象,类也属于对象。

准确定义

由数据及其操作所构成的封装体,是系统中用来描述客观事物的一个模块,是构成系统的基本单位。用计算机语言来描述,对象是由一组属性和对这组属性进行的操作构成的。

 类

定义

类是一个数据结构,类定义数据类型的数据 属性和行为(方法)。

实例对象是类的具体实体,称之为类的实例 (instance)        与类要区分开

python中,一切皆为对象,并有以下定义。

类称为类对象 (class object) 例如 int 。

类的实例称为实例对象(instance object)

 注意定义类时,首字母必须大写。

实例对象

实例对象的创建

对象是类的实体,称之为类的实例。

语法

实例对象名 = 类名 (参数列表)

例子

Liuyang=Example( )

实例对象归属类的判定(isinstance函数)

class Example:
    Body='强壮'
    def infor(self):
        print('示范作用')
liuyang=Example()
print(isinstance(liuyang,Example))

实例对象成员对象的访问

类的实例称为实例对象,创建后可以使用"."运算符调用其他成员,成员主要有:

实例对象的属性:描述实例对象状态的数据成员。

实例对象的方法:描述操作的函数成员。

实例对象成员访问方法:

object_name.对象方法或object_name.对象属性

实例

class Example:
    Body='强壮'
    def infor(self):
        print('示范作用')
liuyang=Example()
print(isinstance(liuyang,Example))
print(liuyang.Body)
print(liuyang.infor())

参数self的使用

self是一个比较抽象的概念,一直以来对此概念有不清晰地方的朋友们可以借此机会好好看一下。

在方法列表中,第一个参数永远都是self(金科玉律,直接背过就可以了)

self指的就是对象本身。

当某个实例对象调用方法的时候,python解释器会把这个实例对象作为第一个参数传给self,开发者只需要传递后面的参数。

实例

class Example:
    Body='强壮'
    def infor(self):
        print('示范作用')
    def effect(self,career):
        print(f'{career}的典范')
liuyang=Example()
print(liuyang.effect("学生"))
def setSpeed (s)
self.speed s

区分:方法与函数

函数需要手动输入self,方法不需要。

函数需要使用函数名去调用,方法使用对象名去调用。

两个对照例子

class Example:
    Body='强壮'
    def infor(self):
        print('示范作用')
    def effect(self,career):
        print(f'{career}的典范')
liuyang=Example()
print(liuyang.effect("学生")) #方法调用

def effect(self):
    print(f"{self}是好干部")
print(effect("焦裕禄"))    #函数调用

函数转换为方法

def setSpeed (s)
self.speed=s
import types
#动态增加成员方法
car1.setSpeed=types.MethodType(setSpeed,car1)car1.setSpeed(50)
#调用成员方法
print(car1.speed)

对象的属性

类的数据成员是在类中定义的成员变量,用来存储描述类的特征的值,称之为属性。

属性实际上是在类中定义的变量。

属性可以被该类中定义的方法访问,也可以通过类对象或实例对象进行访问。

有关__init__函数的解释

class来定义类,类又包含了属性、方法等,属性是类里面的变量,方法是类里面的函数

而__init__就是其中一种函数,叫做构造函数

每次创建类的实例对象时,__init__函数就会自动被调用(和C++里面的构造函数没有什么本质区别),无论它里面有什么样的变量、计算,统统会自动调用。

class Box:
    #def setDimension(self, width, height, depth):
    #   self.width = width
    #   self.height = height
    #   self.depth = depth
    def __init__(self, width, height, depth):
        self.width = width
        self.height = height
        self.depth = depth
 
    def getVolume(self):
        return self.width * self.height * self.depth
 
b = Box(10, 20, 30)
print(b.getVolume())

上述代码采用了两种方法写了构造函数,其中setdimension与__init__含义是完全相同的。

理解__init__函数需要搞清楚以下三点:

1.带有 两个下划线开头的函数是声明该属性为私有,不能在类地外部被使用或直接访问。
2.init函数(方法)支持带参数的类的初始化 ,也可为声明该类的属性
3.init函数(方法)的第一个参数必须是 self(self为习惯用法,也可以用别的名字),后续参数则可以自由指定,和定义函数没有任何区别。

 构造方法__init__用于创建实例对象时使用,每当创建一个类的实例对象时,Python解释器都会自动调用它,用来初始化对象的某些属性。

实例对象属性的构造

通过“ self. 变量名”定义的属性称为实例对象的属性或变量,实例对象的属性在类的内部通过 self 访问,在外部通过对象实例访问。

初始化:实例对象属性一般在 __init__() 方法中通过如下形式:

类内部访问:通过self访问

self.实例变量名                #读取

self.实例变量名=值          #写入

创建实例后访问:

对象名.实例对象名              #读取

对象名.实例对象名=值        #写入

 

 

 

 私有属性

通常约定以两个下划线“__”开头但不以两个下划线为结束的属性成为私有属性。
其他的成为公有属性。不能直接访问私有属性,但可在方法中访问。

class person2:
    career='运动员'
    def __init__(self,grade1,age1):
        self.grade=grade1
        self.age= age1
    def get_grade(self):
        return self.grade
    __identity='间谍'
    def get_identity(self):
        return self.__identity
a=person2(95,21)
print(a.__identity)

 使用上述方式直接调用私有数据会导致报错,权限问题。

 使用函数读取私有数据即可(这一点和c++完全类似)

class person2:
    career='运动员'
    def __init__(self,grade1,age1):
        self.grade=grade1
        self.age= age1
    def get_grade(self):
        return self.grade
    __identity='间谍'
    def get_identity(self):
        return self.__identity
a=person2(95,21)
print(a.get_identity())

 

 

 



 传送门:Python全套学习笔记

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛哥带你学代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值