Python(15)——python中的类方法、静态方法和property类属性


1、类方法和静态方法(不懂)

(1)类方法是类对象所拥有的方法,需要用修饰器一般以@classmethod来标识其为类方法,

  • 对于类方法,第一个参数必须是类对象,作为第一个参数(cls是形参, 可以修改为其它变量名,但最好用’cls’了)
  • 能够通过实例对象和类对象去访问

(2)静态方法需要用修饰器一般以@staticmethod来标识其为静态方法,

  • 静态方法不需要多定义参数
  • 能够通过实例对象和类对象去访问
class date(object):
    # 正常的方法: 将对象作为参数传给self
    def get_self(self):
        print('self:', self)

    # 类方法: 将类名作为参数传给cls
    @classmethod
    def get_cls(cls):
        print('cls:', cls)

    # 静态方法:不自动传递任何参数
    @staticmethod
    def get_static(name, age):
        print("静态方法", name, age)
d1=date()
d1.get_self()
d1.get_cls()
d1.get_static('tom',12)

2、property类属性

2.1 property类属性介绍

一种用起来像是使用的实例属性一样的特殊属性,可以对应于类的某个方法。

property属性的定义和调用要注意一下几点:

  • 定义时,在实例方法的基础上添加 @property 装饰器;并且仅有一个self参数
  • 调用时,无需括号

property属性的有两种方式:

  • 装饰器 即:在方法上应用装饰器
  • 类属性 即:在类中定义值为property对象的类属性

注意:

  • 经典类中的属性只有一种访问方式,其对应被 @property 修饰的方法
  • 新式类中的属性有三种访问方式,并分别对应了三个被@property、@方法名.setter、@方法名.deleter修饰的方法

2.2 类属性的应用

类属性应用需求: 对于商城中显示电脑主机的列表页面,每次请求不可能把数据库中的所有内容都显示到页面上,而是通过分页的功能局部显示,所以在向数据库中请求数据时就要显示的指定获取从第m条到第n条的所有数据 这个分页的功能包括:

  • 根据用户请求的当前页和总数据条数计算出 m 和 n
  • 根据m 和 n 去数据库中请求数据

(1)调用类的方法

class Page(object):
    def __init__(self, page, per_page=10):
        self.page = page
        self.per_page = per_page
    def start(self):
        return (self.page - 1) * self.per_page

    def end(self):
        return self.page * self.per_page

if __name__ == '__main__':
    goods = ['good'+str(i+1) for i in range(100)]
    page = Page(page=10, per_page=3)
    print(goods[page.start():page.end()])
输出:
['good28', 'good29', 'good30']

(2)类属性的方法

class Page(object):
    def __init__(self, page, per_page=10):
        self.page = page
        self.per_page = per_page

    # 类属性: 将类方法变成类属性的过程。
    @property
    def start(self):
        return (self.page-1) * self.per_page

    @property
    def end(self):
        return  self.page * self.per_page

if __name__ == '__main__':
    goods = ['good'+str(i+1) for i in range(100)]
    page = Page(page=10, per_page=3)
    print(goods[page.start:page.end]) ## 类属性使用
输出:
['good28', 'good29', 'good30']

2.3 类属性的简单应用

class date(object):
    def __init__(self, year, month, day):
        # 私有属性
        self.__year = year
        self.__month = month
        self.__day = day

    # 将类方法object.year()转变成类属性object.year, 只是让代码更加简洁而已。
    @property
    def year(self):
        return  self.__year

today = date(2021, 2, 27)
print(today.year)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值