美文网首页
python入门开发学习笔记之类、实例、方法、属性详解

python入门开发学习笔记之类、实例、方法、属性详解

作者: 程序媛_lisa | 来源:发表于2022-03-16 14:08 被阅读0次

本节重点:

  • 使学员了解面向对象语法使用

本节时长需控制在60分钟内

类的语法

上面的代码其实有问题,属性名字和年龄都写死了,想传名字传不进去。

class Person(object):

    def __init__(self, name, age):
        self.name = name
        self.age = age

p = Person("Alex", 22)
print(p.name, p.age)

为什么有init? 为什么有self? 此时的你一脸蒙逼,相信不画个图,你的智商是理解不了的!

画图之前, 你先注释掉这两句

# p = Person("Alex", 22)
# print(p.name, p.age)

#加上句
print(Person)

#执行结果
<class '__main__.Person'>

这代表什么?代表 即使不实例化,这个Person类本身也是已经存在内存里的对不对, yes, cool,那实例化时,会产生什么化学反应呢?[图片上传失败...(image-7dcbfa-1647410753308)]

根据上图我们得知,其实self,就是实例本身!你实例化时python解释器会自动把这个实例本身通过self参数传进去。

你说好吧,假装懂了,但是这么干有什么好处呢?想了解self的好处,得给Person类加个功能

class Person(object):

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def talk(self):
        print("Hello, my name is %s, I'm %s years old!" % (self.name, self.age))

p = Person("Alex", 22)
# print(p.name, p.age)
p.talk() #注意这里调用并未传递参数

执行输出

Hello, my name is Alex, I'm 22 years old!

为何p.talk()未传参数不报错,且为何talk方法定义要跟一个self参数?

我们上面讲到self其实是实例本身, 那p.talk() 其实相当于p.talk(p),你不需要自己把p实例传进去,解释器帮你干了,那为何要在talk定义时加self参数呢?

是因为,你的talk方法里有调用到实例的属性呀,这些属性又都是绑定在实例上的,你想调用实例属性,就必须要把实例传进去。

构造方法

__init__(...)被称为 构造方法或初始化方法,在例实例化过程中自动执行,目的是初始化实例的一些属性。每个实例通过init初始化的属性都是独有的

刚才定义的这个类体现了面向对象的第一个基本特性,封装,其实就是使用构造方法将内容封装到某个具体对象中,然后通过对象直接或者self间接获取被封装的内容

了解了基本定义,下面详解下类的方法和属性

类的方法

构造方法

刚才上面已经说了,主要作用是实例化时给实例一些初始化参数,或执行一些其它的初始化工作,总之,因为这个init只要一实例化,就会自动执行,so不管你在这个方法里写什么,它都会统统在实例化时执行一遍

普通方法

定义类的一些正常功能,比如人这个类, 可以说话、走路、吃饭等,每个方法其实想当于一个功能或动作

析构方法(解构方法)

实例在内存中被删除时,会自动执行这个方法,如你在内存里生成了一个人的实例,现在他被打死了,那这个人除了自己的实例要被删除外,可能它在实例外产生的一些痕迹也要清除掉,清除的动作就可以写在这个方法里

class Person(object):

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def talk(self):
        print("Hello, my name is %s, I'm %s years old!" % (self.name, self.age))

    def __del__(self):
        print("running del method, this person must be died.")

p = Person("Alex", 22)
p.talk()

del p

print('--end program--')

相关文章

  • python入门开发学习笔记之类、实例、方法、属性详解

    本节重点: 使学员了解面向对象语法使用 本节时长需控制在60分钟内 类的语法 上面的代码其实有问题,属性名字和年龄...

  • Python学习-面向对象

    查看所有Python相关学习笔记 面向对象 面向对象知识点汇总: 面向对象静态属性实例属性(self)静态方法(@...

  • 策略PM入门学习(十四)

    4.4 【功能导向性实例】屏幕亮度策略思考方法 策略产品经理入门学习笔记:策略PM入门学习(一)策略PM入门学习(...

  • python 面向对象编程之实例属性和类属性

    python学习笔记,特做记录,分享给大家,希望对大家有所帮助。 实例属性和类属性 由于Python是动态语言,根...

  • 策略PM入门学习(十五)

    4.5【功能导向性实例】目的地模块策略思考方法 策略产品经理入门学习笔记:策略PM入门学习(一)策略PM入门学习(...

  • 策略PM入门学习(十六)

    4.6【功能导向性实例】公交线路推荐模块策略思考方法 策略产品经理入门学习笔记:策略PM入门学习(一)策略PM入门...

  • 使用__slots__实现动态绑定

    Python作为动态语言,可以实现动态绑定属性和实例方法等。 动态绑定属性 动态绑定实例方法 给一个实例绑定的方法...

  • 实例属性和类属性

    实例属性和类属性: 由于Python是动态语言,根据类创建的实例可以任意绑定属性。 (1)给实例绑定属性的方法是通...

  • python入门开发学习笔记之类与对象

    本节重点 掌握什么是类、什么是对象 掌握如何定义及使用类与对象 了解对类与对象之间的关系 类与对象的概念 类即类别...

  • 09.属性方法分类

    1.在JavaScript中属性和方法分类两类 1.1实例属性/实例方法在企业开发中通过实例对象访问的属性, 我们...

网友评论

      本文标题:python入门开发学习笔记之类、实例、方法、属性详解

      本文链接:https://www.haomeiwen.com/subject/yrjpdrtx.html