类方法:魔术方法和静态方法

类中的类方法

类方法的特点:
1.定义需要依赖装饰器#@classmethod
2.类方法中参数不是一个对象 而是类
print(cls)—><class ‘main.Dog’>
3.类方法中只可以使用类属性
4.类方法中不可以使用普通方法

class Fruit():
    name = '水果'
    
    @classmethod
    def cut(cls):
        print('类方法打印:切{}'.format(cls.name))

Fruit.cut()

# 输出结果:
类方法打印:切水果

类方法作用:
因为只能访问类属性和类方法,所以可以在对象创建之前,完成一些动作(功能)

类中的静态方法

静态方法:很类似类方法
1.需要装饰器@staticmethod
2.静态方法可以无需传递参数的(cls,self)
3.也只能访问类的属性和方法,对象的是无法访问的
4.加载时机同类方法

class Fruit():

    @staticmethod
    def cut():
        print('静态方法打印')

Fruit.cut()

# 输出结果:
静态方法打印

类方法,静态方法之间的不同:
1.静态方法使用的装饰器是staticmethod 类方法使用的装饰器是 classmethod
2.类方法是有参数的,静态方法可以没有参数

相同
1.只能访问类的属性和方法,对象的是无法访问的
2.都可以通过类名调用访问
2.都可以在创建对象之前使用,因为是不依赖于对象

普通方法 与 两者区别
不同

  1. 普通方法没有装饰器
  2. 普通方法拥有是要依赖对象,因为每个普通方法都有一个self
  3. 只有创建了对象才可以调用普通方法,否则无法调用

类中的魔术方法

在python’中以__方法名__命名的方法一般都被称为魔术方法

常见的魔术方法:

__init__()

始化魔术方法
触发时机:初始化对象时触发(不是实例化触发,但是和实例化在一个操作中)
参数:至少有一个self,接收对象
返回值:无
作用:初始化对象的成员
注意:使用该方式初始化的成员都是直接写入对象中,类中无法具有

__new__()

实例化的魔术方法
触发时机:在实例化对象时触发
参数:至少一个cls接收当前类
返回值:必须返回一个对象实例
作用:实例化对象
注意:实例化对象是Object类底层实现,其他类继承了Object的__new__才能实现实例化对象
没有必要尽量不要碰这个魔术方法,先触发__new__才会触发__init__

__call__()

对象调用方法
触发时机:将对象当成函数使用的时候,会默认调用此函数中内容

__str__()

当使用print输出对象的时候,只要自己定义了__str__(self)方法,那么就会打印从在这个方法中return的数据
__str__方法需要返回一个字符串,当做这个对象的描写

import sys
print(sys.getrefcount(f))

查看对地址的引用个数

del f

删除f对地址的引用

__del__

当一块空间没有了任何引用时,默认执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值