记录一点儿学习足迹

深入学习理解一点儿python

Python中的staticmethod与classmethod
class Date(object):
    day = 0
    month = 0
    year = 0
    
    def __init__(self, day=0, month=0, year=0):
        self.day = day
        self.month = month
        self.year = year
	
	@classmethod   # 第一参数为cls
    def from_string(cls, date_as_string):
        day, month, year = map(date_as_string.split('-'))
        date1 = cls(day, month, year)
        return date1
   
    @staticmethod  # 类的静态方法
	def is_date_valid(date_as_string):
	    day, month, year = map(int, date_as_string_split('-'))
	    return day <= 31 and month <= 12 and year <= 3999
#   一般使用
day, month, year = map(int, string_date.split('-'))
date1 = Date(day, month, year)
#   类方法调用
date2 = Date.from_string('11-09-2012')
#   类的静态方法。类可以直接使用
is_date = Date.is_date_valid('11-09-2012')
python中的property

property是一种特殊的属性,访问它时会执行一段功能(函数)然后返回值


为什么要用property
将一个类的函数定义成特性以后,对象再去使用的时候obj.name,根本无法察觉自己的name是执行了一个函数然>后计算出来的,这种特性的使用方式遵循了统一访问的原则

import math
class Circle:
    def __init__(self,radius): #圆的半径radius
        self.radius=radius

    @property
    def area(self):
        return math.pi * self.radius**2 #计算面积

    @property
    def perimeter(self):
        return 2*math.pi*self.radius #计算周长

c=Circle(10)
print(c.radius)
print(c.area) #可以向访问数据属性一样去访问area,会触发一个函数的执行,动态计算出一个值
print(c.perimeter) #同上
'''
输出结果:
314.1592653589793
62.83185307179586
'''
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值