开发者学堂课程【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 传参。
方式调用有两种,一种是通过 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 指的是类对象。如果一个方法只使用到类属性,可以将这个方法定义为类方法。
在内存里有两个区块,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()
静态方法:
如果一个方法,即用不到实例对象,也用不到类对象,可以把这个方法定义为静态方法。
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 变成静态方法,这是就可以不用创建对象,直接用类名调用方法。