方法相关
方法的概念
描述一个目标的行为动作
和函数相似
- 封装了一系列行为动作。比如一个人怎么吃,怎么喝,怎么玩...
- 都可以被调用
- 最主要区别:调用方式
方法的划分
- 实例方法:默认第一个参数是一个实例
- 类方法:默认第一个参数是类
- 静态方法:没有默认参数
- 注意
- 划分的依据:方法的第一个参数必须要接收的数据类型
- 不管哪一种类型的方法,都存储在类中;没有在实例当中的
- 不同类型方法的调用方式不同
实例方法、类方法及静态方法的调用
class Person:
def eat2(self):
print("这是一个实例方法", self)
@classmethod
def leifangfa(cls):
print("这是一个类方法", cls)
@staticmethod
def jingtaifangfa():
print("这是一个静态方法")
p = Person()
p.eat2()
# p.leifangfa() # 实例可以调用
# p.jingtaifangfa() # 实例可以调用
Person.leifangfa()
Person.jingtaifangfa()
实例方法
类中实例方法的调用方式
class Person:
def eat(self, food):
print("在吃饭.", self, food)
# 标准调用实例方法
p = Person()
print(p)
p.eat("粥")
# 第二种调用实例方法(使用类调用)
Person.eat(123, 456)
# 第三种方法(间接调用)
func = Person.eat
func("实例", 999)
类方法
类方法的调用方式
class Person:
@classmethod
def leifangfa(cls, a):
print("这是一个类方法", cls, a)
# 第一种
Person.leifangfa("100")
# 第二种
p = Person()
p.leifangfa("200")
# 第三种
func = Person.leifangfa
func("300")
# 装饰器的作用:在保证原有函数功能的情况下,给函数增加新的功能
class A(Person):
pass
A.leifangfa("A")
静态方法
静态方法的调用方式
class Person:
@staticmethod
def jingtai():
print("这是一个静态方法")
# 第一种调用方式(类调用)
Person.jingtai()
# 第二种调用方式(实例调用)
p = Person()
p.jingtai()
# 第三种调用方式
Func = Person.jingtai
Func()
# 第四种调用方式
Func2 = p.jingtai
Func2()
不同类型的方法访问不同类型的属性规律
class Person:
age = 0
def shilifangfa(self):
print(self)
print(self.age)
print(self.num)
@classmethod
def leifangfa(cls):
print(cls)
print(cls.age)
# print(cls.num) # 类方法无法访问实例属性
@staticmethod
def jintaifangfa():
print(Person.age)
p = Person()
p.num = 10
# 类属性
print(Person.age)
print(p.age)
# 实例属性
print(p.num)
p.shilifangfa()
p.leifangfa()
p.jintaifangfa()
# Person.leifangfa()
# Person.jintaifangfa()
学习链接: 【Python】零基础入门 面向对象编程(强烈推荐)
标签:leifangfa,调用,静态方法,Person,python,面向对象,实例,print,方法 From: https://www.cnblogs.com/amanzhj/p/17795929.html