记录一点儿学习足迹
深入学习理解一点儿pythonPython中的staticmethod与classmethodclass Date(object):day = 0month = 0year = 0def __init__(self, day=0, month=0, year=0):self.day = dayself.m...
·
深入学习理解一点儿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
'''
更多推荐
已为社区贡献1条内容
所有评论(0)