[Python] Python学习笔记:面向对象

本文介绍了Python中的面向对象编程,包括对象的概念、类的定义与调用、特殊方法、自定义对象排序、类的继承等内容。通过实例展示了如何创建、初始化、调用类以及如何实现对象的比较和排序。此外,还探讨了类的继承机制,子类如何覆盖和扩展父类的功能。文章以实际的编程练习和课后习题巩固了面向对象的知识点。
摘要由CSDN通过智能技术生成

什么是对象

对象的基本概念

Python中的所有的事物都是以对象形式存在,从简单的数值类型到复杂的代码模块都是对象
对象=属性+方法:对象以id作为标识,既包括数据(属性),也包括代码(方法),是某一类具体事物的特殊实例

# 在python concole中输入,为区分输入输出加了>>>
>>>id(1)  # 整数1这个对象保存的地址
140711440851344
>>>type(1)  # 类型
<class 'int'>
>>>dir(1)  # 查看属性和方法
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']

函数也是对象

>>>id(abs)
1795808880264
>>>type(abs)
<class 'builtin_function_or_method'>  # 内置的函数或者方法
>>>dir(abs)
['__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__text_signature__']

创建对象

对象是类的实例,是程序的基本单元。

要创建一个新的对象,首先必须定义一个类,用以证明该类型的对象所包含的内容(属性和方法)。

同一类(class)的对象具有相同的属性和方法,但属性值和id不同。

对象的名称:赋值语句给予对象名称,对象可以有多个名称(变量引用),但只有一个id
例:a=complex(1,2)
b=a \quad # b也指向complex(1,2)这个对象

对象实现了属性和方法的封装,是一种数据抽象机制

对象属性和方法的引用

引用形式:<对象名>.<属性名>
可以跟一般的变量一样用在赋值语句和表达式中
例:“abc”.upper() 变成全大写 "abc"为字符串对象w
(1+2j).real
(1+2j).imag

Python语言动态的特征,使得对象可以随时增加或者删除属性或者方法 del f3.fz

面向对象编程

面向对象编程(OOP)是一种程序设计范型,同时也是一种程序开发方法。

程序中包含各种独立而又能 互相调用的对象。
每个对象都能接受、处理数据并将数据传递给其他对象。

类的定义与调用

什么是类

类(class)是对象的模板,封装了对应现实实体的性质和行为。
实例对象是类的具体化。
把类比作模具,对象则是用模具制造出来的零件。

类的出现,为面向对象编程的三个最重要的特性提供了实现的手段:封装性、继承性、多态性。
和函数相似,类是一系列代码的封装。
Python中约定,类名用大写字母开头函数用小写字母开头,以便区分。

定义类

class语句:

class <类名><一系列方法的调用>

类的初始化

class <类名>def __init__(self, <参数表>)def <方法名>(self, <参数表>):

__init__() 是一个特殊的函数名,用于根据类的定义创建实例对象,第一个参数必须是self

调用类

<类名>(<参数>)
调用类会创建一个对象,(注意括号
obj = <类名>(<参数名>)
返回一个对象实例
类方法中的self指这个对象实例本身

使用点(.)操作符来调用对象里的方法
t = turtle.Pen() # 生成海龟
t.forward(100) # 这里的t指向对象实例的变量
t.self(90)

class Force:  # 力
    def __init__(self, x, y):  # x,y方向变量
        self.fx, self.fy = x, y

    def show(self):
        print("Force<%s,%s>" % (self.fx, self.fy))

    def add(self, force2):  # 与另一个力合成
        x = self.fx + force2.fx
        y = self.fy + force2.fy
        return Force(x, y)


# 生成一个力对象
f1 = Force(0, 1)
f1.show()

# 生成另一个力对象
f2 = Force(3, 4)
# 合成为新的力
f3 = f1.add(f2)
f3.show()

结果为:

Force
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值