1.静态方法和类方法
#如果类中需要非该类成员存在,则可以使用静态调用的方法@staticmethod
例题:输入四条边判断它是否是一个正方形
(is_valid)
class Joker(object): def __init__(self,a,b,c,d): self.a = a self.b = b self.c = c self.d = d @staticmethod def is_valid(a,b,c,d): for i in[b,c,d]: if i != a: return False else: return True def area(self): if res == True: area_ = self.a * self.b return area_ def main(): joker = Joker(2,2,2,2) res = joker.is_valid(2,2,2,2) if res == True print(joker.area())
1.1.和静态方法比较类似,Python还可以在类中定义类方法,类方法的第一个参数约定名为cls,它代表的是当前类相关的信息的对象(类本身也是一个对象,有的地方也称之为类的元数据对象),通过这个参数我们可以获取和类相关的信息并且可以创建出类的对象
@classmethod:获取自身类(cls)中的属性,并且可以更改.
classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等
from time import time, localtime, sleep class Clock(object): """数字时钟""" def __init__(self, hour=0, minute=0, second=0): self._hour = hour self._minute = minute self._second = second @classmethod def now(cls): ctime = localtime(time()) return cls(ctime.tm_hour, ctime.tm_min, ctime.tm_sec) def run(self): """走字""" self._second += 1 if self._second == 60: self._second = 0 self._minute += 1 if self._minute == 60: self._minute = 0 self._hour += 1 if self._hour == 24: self._hour = 0 def show(self): """显示时间""" return '%02d:%02d:%02d' % \ (self._hour, self._minute, self._second) def main(): # 通过类方法创建对象并获取系统时间 clock = Clock.now() while True: print(clock.show()) sleep(1) clock.run() if __name__ == '__main__': main()
1.2 时间戳:从1970年1月1号00.00.00秒开始到现在经历过的秒速。
继承
1.在类名中写上继承的对象,类才能继承
例题:创建一个父类,创建一个子类,父类计算俩个数字的和 记为SUM_,子类打印这个SUM_
class A(object):
def __init__(self,a,a1):
self.a = a
self.a1 = a1
def A1(self):
print('a+b=',a+b)
class B(A):
def __init__(self):
A.__init__(self)
self.b = b
def B1(self):
print('B1')
b_ = B()
print(b_.a)
b_.A1()
装饰器 @deco
def Joker(func): def warp(a,b,): pass print("a+b=",a+b) return func(a,b)#写俩个参数 return warp #装饰器将前俩个数字求和,函数本身第三个参数乘上这个和 @Joker def SUM(a,b): print(a,b) SUM(100,200)