Python类的方法

Python类的语法中有三种方法:实例方法,静态方法,类方法。

在学习Python编程class类定义方法时,括号里的self 总是让人有点迷糊,看如下代码

import time

class TimeStamp(object):
    """
    # 每个方法的功能都是返回当前时间戳
    """
    def timestamp(self):
    """实例方法"""
        ts = time.time()
        timestamp = round(ts * 1000)
        return timestamp

    @staticmethod
    def s_timestamp():
    """静态方法"""
        ts = time.time()
        timestamp = round(ts * 1000)
        return timestamp

    @classmethod
    def c_timestamp(cls):
    """类方法"""
        cls.ts = time.time()
        timestamp = round(cls.ts * 1000)
        return timestamp

if __name__ == '__main__':
    a = TimeStamp()  # 定义实例对象
    print(a.timestamp())
    print(TimeStamp.s_timestamp())
    print(TimeStamp.c_timestamp()) 
  • 实例方法:第一个参数必须要默认传实例对象,一般习惯用self;实例方法只能被类的实例对象调用。
  • 静态方法:参数没有要求,可以空(由@staticmethod 装饰);静态方法可以被类或类的实例对象调用。 
  • 类方法:第一个参数必须要默认传类,一般习惯用cls(由@classmethod 装饰);类方法可以被类或类的实例对象调用。

还有一类特殊的方法:属性(由@property 装饰)

import time

class TimeStamp(object):
    @property
    def p_timestamp(self):
    """属性"""
        ts = time.time()
        timestamp = round(ts * 1000)
        return timestamp

if __name__ == '__main__':
    a = TimeStamp()  # 定义一个实例对象
    print(a.p_timestamp)

使用@property 装饰器会将方法转换为相同名称的只读属性,这样可以防止属性被修改。


总 结 :
  1. 属性与实例方法差不多,第一个参数也是默认传实例对象,只能被实例对象调用;不同之处在于调用属性时方法名后不需带括号()。
  2. 类的方法只是在定义上、访问类变量和调用时有些许差别,开发者可以根据个人习惯自由使用,项目本身没有限制。
  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值