图解静态方法和类方法 | 学习笔记

简介: 快速学习 图解静态方法和类方法

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

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


图解静态方法和类方法


内容介绍:

一、  实例方法

二、  类方法

三、  静态方法


一、实例方法

class Person(object) :

type =  'human'

def _init___( self, name,age) :

self.name = name

self.age = age

def eat( self food):

print(self.name + '正在吃’+ food)

p1 = Person('张三'18)

p1.eat('红烧牛肉泡面')

Person.eat(p2西红柿鸡蛋盖饭')

Person.demo()

p1.demo()

p1.test()

Person.test()

在整段代码中有三种类型的方法。

实例方法:会用到实例对象的属性, self 指向调用这个方法的实例对象。

两种调用方式:

1.实例对象.方法名==>不需要手动给 self 传参,会自动将实例对象传递给 self

2.类对象.方法名==>需要手动的给 self 传参。

image.png

方式调用有两种,一种是通过 p1 调用,另一种是通过类名调用。


二、类方法

class Person(object) :

type =  'human'

def _init___( self, name,age) :

self.name = name

self.age = age

@classmethod

def test(cls ):

print( cls.type)

print( 'yes ' )

p1 = Person('张三'18)

p1.eat('红烧牛肉泡面')

Person.eat(p2西红柿鸡蛋盖饭')

Person.demo()

p1.demo()

p1.test()

Person.test()

类方法:

会有一个参数 cls,这个 cls 指的是类对象。如果一个方法只使用到类属性,可以将这个方法定义为类方法。

image.png

在内存里有两个区块,Person 指向第一块内存,person 里有 type = ‘human’ , p1里有 name:张三,18

一个实例对象一个类对象,如果这个方法需要访问实例对象的属性,self 会指向 p1

如果想用到类属性,可以把方法定义为类方法,一般类方法配合类属性使用,只要加了装饰器之后 cls 就会自动指向类对象,可以通过类对象来访问类属性。


三、静态方法

class Person(object) :

type =  'human'

def _init___( self, name,age) :

self.name = name

self.age = age

@staticmethod

def demo( ):

print( ‘hello')

p1 = Person('张三'18)

p1.eat('红烧牛肉泡面')

Person.eat(p2西红柿鸡蛋盖饭')

Person.demo()

p1.demo()

p1.test()

Person.test()

image.png

静态方法:

如果一个方法,即用不到实例对象,也用不到类对象,可以把这个方法定义为静态方法。

class Calculator(object) :

@staticmethodI

def add(a, b):

return a+ b

@staticmethoddef minus(a b):

return a – b

@staticmethoddef mul(a b):

return a*b

print(calculator.add(2,3))

在没有面向对象的思维之前代码都是由函数组成的,在面向对象之后代码会有更大的一个范围,在这个类中没有用任何属性,将方法加上修饰器 @staticmethod 变成静态方法,这是就可以不用创建对象,直接用类名调用方法。

相关文章
|
4月前
|
Java
Java面向对象 ( 类与对象 | 构造方法 | 方法的重载 )
Java面向对象 ( 类与对象 | 构造方法 | 方法的重载 )
|
5月前
|
Java 编译器
JavaSE——面向对象基础(2/4)-this关键字、构造器(this的执行原理、应用场景,构造器的特点、应用)
JavaSE——面向对象基础(2/4)-this关键字、构造器(this的执行原理、应用场景,构造器的特点、应用)
33 5
|
6月前
|
Python
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
83 0
|
6月前
|
数据库 Python
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(下)
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)
79 0
|
6月前
|
Java
Java面向对象编程,构造函数和方法的区别是什么?
Java面向对象编程,构造函数和方法的区别是什么?
111 2
|
算法 Python
python笔记-多继承-MRO顺序——类方法、实例方法、静态方法的简单区
python笔记-多继承-MRO顺序——类方法、实例方法、静态方法的简单区
|
Java
Java面向对象基础3——构造方法及this关键字
Java面向对象基础3——构造方法及this关键字
152 0
Java面向对象基础3——构造方法及this关键字
|
Java 程序员
Java面向对象8——抽象类和抽象方法(知识点+使用方法)
抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要声明而不需要实现
256 0
Java面向对象8——抽象类和抽象方法(知识点+使用方法)
|
开发者 Python
类方法和静态方法 | 学习笔记
快速学习类方法和静态方法,介绍了类方法和静态方法系统机制, 以及在实际应用过程中如何使用。
类方法和静态方法 | 学习笔记
|
开发者 Python
类方法和静态方法回顾|学习笔记
快速学习类方法和静态方法回顾
类方法和静态方法回顾|学习笔记