python极简教程:对象的方法_python对象的含义

liftword5个月前 (02-17)技术文章60

这一场,主讲python的面向对象的第二部分—— 对象的方法

目的:掌握Python对象的五个核心方法。

init和new

讲解之前,先上一段代码

class Demo:
    def __init__(self, name):
        print("init")
        print("init " + name)

    def __new__(cls, *args, **kwargs):
        print("new")
        print("new " + args[0])
d = Demo("张三")

通过前面的学习,你能说出这段代码运行的输出结果吗?

答案是:

#new
#new 张三

通常,我们会认为__init__()是类的初始化方法,当实例化类之后,会优先执行它(运行后应当优先输出"init"、"init 张三"),但实际上,__new__()方法才优先执行的方法,同时,它也是创建对象的方法。

说得通俗一点:以造房子举例,new方法是打地基,存放建材原料,init方法则是按照图纸建造房子。

那么,什么时候用new方法?

其实,用得很少,更多的时候,我们使用的是init方法。但init方法用久了之后,就会误以为它是创建实例的方法,而实际上,new方法才是创建实例的方法。

大家谨记,以免面试时踩坑。

类方法、静态方法、对象方法

首先,先讲讲这三个方法如何使用。

  • 类方法:使用 @classmethod 装饰,第一个参数是cls
  • 静态方法:使用 @staticmethod 装饰
  • 对象方法:不使用装饰器,第一个参数是self
class Cat:

    age = 5
    area = 'Chengdu'

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

    # 这是一个有问题的方法
    def drink():
        print("Cat drink")

    # 这是一个静态方法
    @staticmethod
    def eat(food):
        print("Cat eat {}".format(food))

    # 这是一个对象方法
    def get_name(self):
        return self.name

    # 这是一个类方法
    @classmethod
    def info(cls):
        print(cls.age)
        print(cls.area)
        print(self.name)

# 实例化一只叫Kitty的黑猫 
black_cat = Cat('Kitty')

# 有问题的方法,直接报错了
# black_cat.drink() 

# 静态方法调用
black_cat.eat('fish') # 可以实例(black_cat)调用
Cat.eat('fish') # 也可以类(Cat)调用

# 类方法调用
black_cat.info() # 可以实例(black_cat)调用
Cat.info() # 也可以类(Cat)调用

# 对象方法调用
print(black_cat.get_name()) # 只能实例(black_cat)调用

到这里,你可能会问,这东西有啥用?

如果你只想写个脚本,执行一些简单的程序,那确实没啥用。你可以不关心这三个方法以及他们的调用,甚至连class类都不用写,直接def搞定。

但是,如果你想进阶,理解面向对象,它们很重要。

类方法

类名.方法名()

静态方法

类名.方法名()

对象方法

  • 第一个参数是self
  • 实例的方法
  • 可以访问成员变量
  • 只能实例调用,不能类调用

相关文章

Python 对象有哪几种,我们可以从哪些角度进行分类呢?

楔子在程序开发中,我们每时每刻都在创建对象,那到底什么是对象呢?其实一个对象就是一片被分配的内存空间,空间可以是连续的,也可以是不连续的。然后空间里面存储了指定的数据,并提供了操作数据的一些功能方法。...

如何用 Python 构建一个决策树_python决策结构

本文最初发布于 Medium 网站,经原作者授权由 InfoQ 中文站翻译并分享。决策树是一个经久不衰的话题。本文要做的是将一系列决策树组合成一个单一的预测模型;也就是说,我们将创建集成方法(Ense...

Python基础之对象、面向对象编程_python面向对象程序

本系列内容所用Python版本为anaconda,直接浏览器搜索下载安装即可!前面内容我有多次提到过对象这个概念,今天我想专门出一期内容,浅谈一下Python的对象这一基础概念,并谈谈我对面向对象编程...

python大师讲解python对象类型_python 对象类型

Python对象的基本概念对象是Python中最基本概念。Python程序可以分解成模块、语句、表达式、以及对象程序由模块构成模块包含语句语句包含表达式表达式建立并处理对象Python内置类型Pyth...

当你实例化一个对象时,Python做了什么?

在 Python 中实例化一个对象时,解释器首先查找该对象的类,并创建该类的一个新实例。这涉及到为新对象保留一块内存,并初始化其属性。初始化时会调用类的 __init__() 方法,该方法负责设置对象...

Python获取对象信息_python获取某个值

1. 使用type()函数功能:type()函数用于返回对象的类型。它接受一个对象作为参数,然后返回该对象的类型对象。示例:对于基本数据类型:a = 1 print(type(a))输出为,表明a是整...