类方法和静态方法回顾|学习笔记

简介: 快速学习类方法和静态方法回顾

开发者学堂课程【Python 入门 2020年版类方法和静态方法回顾】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10387


类方法和静态方法回顾

 

类方法和静态方法

1. 打印 name 属性

class Person(object) :

type = human

def _init_(self, name,age):

self.name = name

self.age = age

# 这个方法要打印 name 属性

def demo(self):

print()

print( '姓名是',self.name)

@staticmethod

def foo():

print()

p= Person( ‘zhangsan‘, 19)

p.demo()  # 实例对象调用实例方法时,会自动将实例对象传递给 self

Person. demo(p)

image.png

name 属性保存在实例对象 p上的,如果想访问 name 属性就必须要能访问到 p 的内存。

如果用对象方法,self 会指向 p 的内存。如果使用静态方法,可以通过 p.name 打印,但如果更改了对象名就会出问题。

使用对象方法在实例对象调用时,会自动将实例对象传递给 self。除了实例对象调用还可以用 Person. demo(p)类对象调用实例方法,在类对象调用实例方法时需要手动将 p 传给 self。

2.访问类属性 type

class Person(object) :

type = human

def _init_(self, name,age):

self.name = name

self.age = age

#这个方法需要访问到类属性type

@staticmethod

def foo():

print(Person.type)

@classmethod

def bar(cls):

print(cls.type)

#静态方法可以使用类对象和实例对象调用

p.foo()

Person.foo()

#类方法可以使用类对象和实例对象调用

p.bar()

Person.bar()

image.png

静态方法能否访问到一个内存空间取决于是否有变量指向这个内存空间,所以直接通过 Person.type 即可访问,静态方法可以使用类对象和实例对象调用,所以通过 Person.foo 也可以访问。

类方法可以使用类对象和实例对象调用,无论通过什么对象调用方法都会出现一个 cls 指向类对象。

Person 和 p 都是全局变量,但是 cls 和 self 只能在函数里面使用都是一个临时的指向。

3.打印 hello world

class Person(object) :

type = human

def _init_(self, name,age):

self.name = name

self.age = age

# 这个方法只需要打印 hello world

@staticmethod

def foo():

print( 'hello world")

他既没有用到实例对象里的属性也没有用到类对象的属性所以直接打印即可。

相关文章
|
10月前
|
人工智能 搜索推荐
AI助力,短剧发展引来新的创新热潮
当前AIGC在短剧视频领域的应用尚不突出,但在文本和图像创作上已表现出色,各大厂商提供了多种体验良好的文生文、文生图服务。AI技术正快速改变短剧创作,从智能编剧到场景自动生成,极大提升了创作效率和内容多样性,预示着短剧领域的创新热潮。未来,短剧的创意将更多依赖于提供的文本提示词的创意性和准确性。
|
消息中间件 存储 JSON
离线数仓(二)【用户行为日志采集平台搭建】(2)
离线数仓(二)【用户行为日志采集平台搭建】
|
存储 固态存储 大数据
阿里云服务器收费价格表,云服务器实例、块存储、带宽等项目收费标准参考
阿里云服务器收费项目包括实例价格、预留实例券、专有宿主机、块存储价格、存储容量单位包、带宽价格和快照服务价格,收费模式既有包年包月也有按量付费模式,本文为大家汇总了这些项目的最新收费标准,以供参考。
1032 0
阿里云服务器收费价格表,云服务器实例、块存储、带宽等项目收费标准参考
|
存储 监控 网络协议
一定要焊死在大脑里的38条window命令!
一定要焊死在大脑里的38条window命令!
106 1
|
存储 程序员 编译器
“图解C语言:一维数组的声明、创建与初始化艺术“
“图解C语言:一维数组的声明、创建与初始化艺术“
174 3
leetcode-5943:删除链表的中间节点
leetcode-5943:删除链表的中间节点
86 1
|
数据建模 API 定位技术
详解 API 设计最佳实践
应用程序接口(API)是一种接口,它让应用程序可以轻松地使用另一个应用程序的数据和资源,API 对于一个产品或公司的成功至关重要。 如果没有 API,你大部分喜欢的软件今天就不会存在。例如,Google Maps API 可以让你在 app 或 Web 应用中使用 Google Maps。如果没有它,你将不得不设计和开发自己的地图数据库。这样的话,在地图上显示一个位置需要花费多少时间?
|
存储 前端开发 搜索推荐
基于threejs的商品VR展示平台的设计与实现思路
本设计针对目前互联网销售传统展示的现状,考虑当前市场形式,利用虚拟现实技术理论,结合计算机网络、交互设计实现一个以普通终端浏览器为载体的适用于用户或消费者需求的VR展示平台系统,打造一种全新的商品展示方式,拉近用户或者消费者于商品的距离,提供商品全面的信息,提高商品的可信度,降低交易失败的风险,带来一次愉快完美的购物体验。
1085 1
基于threejs的商品VR展示平台的设计与实现思路
|
C语言
【C语言】汉罗塔
【C语言】汉罗塔
149 0
【C语言】汉罗塔
|
机器学习/深度学习 自然语言处理 达摩院
机器人视觉认知能力将取代人类?ModelScope开源mPLUG模型带你一键体验大火的视觉问答能力
ModelScope上开源了达摩院众多业界最强多模态模型,其中就有首超人类的多模态视觉问答模型mPLUG,小编带大家一起体验下多模态预训练模型的能力。