首页 > 编程语言 >python面向对象-学习笔记(三、类方法、实例方法、静态方法)

python面向对象-学习笔记(三、类方法、实例方法、静态方法)

时间:2023-10-29 15:45:53浏览次数:42  
标签:leifangfa 调用 静态方法 Person python 面向对象 实例 print 方法

方法相关

方法的概念

描述一个目标的行为动作
和函数相似

  • 封装了一系列行为动作。比如一个人怎么吃,怎么喝,怎么玩...
  • 都可以被调用
  • 最主要区别:调用方式

方法的划分

  • 实例方法:默认第一个参数是一个实例
  • 类方法:默认第一个参数是类
  • 静态方法:没有默认参数
  • 注意
    1. 划分的依据:方法的第一个参数必须要接收的数据类型
    2. 不管哪一种类型的方法,都存储在类中;没有在实例当中的
    3. 不同类型方法的调用方式不同
实例方法、类方法及静态方法的调用
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()

image

实例方法

类中实例方法的调用方式
class Person:
    def eat(self, food):
        print("在吃饭.", self, food)


# 标准调用实例方法
p = Person()
print(p)
p.eat("粥")

# 第二种调用实例方法(使用类调用)
Person.eat(123, 456)

# 第三种方法(间接调用)
func = Person.eat
func("实例", 999)

image

类方法

类方法的调用方式
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")

image

静态方法

静态方法的调用方式
class Person:
    @staticmethod
    def jingtai():
        print("这是一个静态方法")


# 第一种调用方式(类调用)
Person.jingtai()
# 第二种调用方式(实例调用)
p = Person()
p.jingtai()
# 第三种调用方式
Func = Person.jingtai
Func()
# 第四种调用方式
Func2 = p.jingtai
Func2()

image

不同类型的方法访问不同类型的属性规律
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()

image


学习链接: 【Python】零基础入门 面向对象编程(强烈推荐)

标签:leifangfa,调用,静态方法,Person,python,面向对象,实例,print,方法
From: https://www.cnblogs.com/amanzhj/p/17795929.html

相关文章

  • python面向对象-学习笔记(四、类相关的补充)
    元类创建类对象的类对象怎么产生的?由类创建出来的。类是不是对象?是所以类对象是不是由另外一个类创建出来的?是,元类创建类对象的另外一种方式#创建类对象的另外一种方式defrun(self):print("run",self)dog=type("Dog",(),{"count":1,"run":run})prin......
  • python面向对象-学习笔记(五、属性相关的补充)
    私有化属性注意python并没有真正支持私有化,但是可以使用下划线完成伪私有的效果类属性(方法)和实例属性(方法)遵循相同的规则公有属性a在类的内部可以访问在子类的内部可以访问在模块其他地方类的属性可以访问子类的属性可以访问类的实例的属性可以访问子类的......
  • python面向对象-学习笔记(二、类&对象的属性)
    如何定义一个类?创建类的格式class类名: pass怎么通过类,创建出一个对象?创建类,并实例化对象classMoney:passone=Money()#打印类print(Money)#打印类的实例print(one)类的别名和打印类的名称classMoney:pass#打印类的名称print(Money.__na......
  • Python 实现 xls 文件转 xlsx 的若干方法
    在Python中,可以采用pandas、pyexcel、win32com和xls2xlsx这四个模块,实现xls转xlsx格式。以Excel示例文件test_Excel.xls为例,具体内容如下图所示:  pandas 安装命令pipinstallpandas-ihttps://mirrors.aliyun.com/pypi/simple具体使用方法importpa......
  • Python 模块:创建、导入和使用
    什么是模块?将模块视为代码库。模块是一个包含一组函数的文件,您想要在应用程序中包含这些函数。创建一个模块要创建一个模块,只需将要包含在其中的代码保存在扩展名为.py的文件中:示例:将以下代码保存在名为mymodule.py的文件中:defgreeting(name):print("Hello,"+name)......
  • python循环迭代
    学习目标掌握for与while循环掌握continue,break,pass的区别核心知识循环中有3种常见的方式顺序:从上向下,顺序执行代码(从上往下执行)分支:根据条件判断,决定执行代码的分支(if/else)循环:让特定代码重复执行(for/while)for循环for可循环遍历的对象有字符串,列表,字典,集合,元组#......
  • python条件判断
    学习目标1、掌握条件判断和流程控制2、掌握条件运算符==,>,<,in3、掌握if/else/elif判断核心知识if判断判断相同:==和is用于判断两个变量的值是否一样,==是判断数据的值是否一样,is不仅判断数据的值还判断数据是否指向同一个对象。判断大小:可配合>、<来判断大小判断存......
  • python函数与异常
    学习目标1、掌握函数的定义2、掌握函数的规定语法3、掌握函调用4、掌握函数的参数5、掌握函数的返回值6、掌握异常处理核心知识啥是函数函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段,还能提高代码的重复利用率。python自带许多内置函数,比如print()打印......
  • python文件操作
    课程目标掌握文本写入的语法掌握文本打开、读取的语法核心知识首先在当前目录下放一个test.txt文件文件读取f=open('test.txt','r',encoding='utf-8')print(f.read())f.close()文件写入除了write()写入语法,还有writelines()直接写入一个列表f=open('test.txt......
  • python综合练习
    学习目标1、random+print+while+format+判断符号>>>彩票游戏2、open+readlines+def函数>>>卖包子3、split+replace+readlines+sockets>>>批量获取域名对应ip并保存案例练习猜彩票importrandom,timea='{}{}{}{}{}{}'.format(random.randint(1,9),random.randint(1,......