1.静态方法和类方法
定义一个三角形的类
""" 如果类中需要非该类成员存在,则可以使用静态调用的方法@staticmethod """ from math import sqrt class Triangle(object): def __init__(self, a, b, c): self._a = a self._b = b self._c = c @staticmethod def is_valid(a, b, c): return a + b > c and b + c > a and a + c > b def perimeter(self): return self._a + self._b + self._c def area(self): half = self.perimeter() / 2 return sqrt(half * (half - self._a) * (half - self._b) * (half - self._c)) def main(): a, b, c = 3, 4, 5 # 静态方法和类方法都是通过给类发消息来调用的 if Triangle.is_valid(a, b, c): t = Triangle(a, b, c) print(t.perimeter())
# 也可以通过给类发消息来调用对象方法但是要传入接收消息的对象作为参数 # print(Triangle.perimeter(t)) print(t.area()) # print(Triangle.area(t)) else: print(‘无法构成三角形.‘) if __name__ == ‘__main__‘: main()
案例:输入四条边判断它是否为一个正方形,如果是,计算面积
class zhengfangxing(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 amin(): zfx = zhengfangxing(2,2,2,2) res = zhengfangxing.is_valid(2,2,2,2) if res == True: print(zhengfangxing.area()) amin()
2.类的继承
class A(object): def __init__(self): ?class A(object): def __init__(self): self.a = 100 def A1(self): print(‘A1‘) #在类名中写上继承的类。 class B(A): def __init__(self): A.__init__(self) self.b = 200 #self.b1 = b1 def B1(self): print(‘B1‘) b_ = B() print(b_.a) b_.A1() self.a = 100 def A1(self): print(‘A1‘) #在类名中写上继承的类。 class B(A): def __init__(self): A.__init__(self) self.b = 200 #self.b1 = b1 def B1(self): print(‘B1‘) b_ = B() print(b_.a) b_.A1()
案例:创建一个父类和子类,
父类计算两个数字的和记为SUM_子类打印这个SUM
class A(object): def __init__(self): self.a = 100 self.a1 = 200 def sum_(self): SUM_ = self.a + self.a1 return SUM_ class B(A): def __init__(self): A.__init__(self) def Print(self): res = self.sum_() print(res) b = B() b.Print()
class A(object): def __init__(self,a1): self.a = 100 self.a1 = a1 def sum_(self): SUM_ = self.a + self.a1 return SUM_ class B(A): def __init__(self,a1,b1): A.__init__(self,a1)#supper(A,self),_init(a1) def Print(self): res = self.sum_() print(res) b = B(1000,‘100‘) b.Print()
#用类方法就可以改变类的属性 class A(object): def __init__(self): self.joker = 100 @classmethod def a(cls): return cls() joker = A.a() print(joker) joker2 = A() joker2.joker_1 = 1000 print(joker2)
列表生成式
#列表生成式 a = [x for x in range(100) if x % 2== 0] print(a)
优点:计算速度快,因为一次性全部到内存中,适合数据量不是太大的情况
缺点:占用内存
列表生成器
a = (x for x in range(100) if x % 2== 0)
优点:节约内存空间
缺点:计算速度慢,因为要生成
函数闭包
def foo(): def bar(): return ‘hell0‘ return bar f1 = foo() print(f1)
def foo(): def bar(): def bar2(): return ‘hell02‘ return bar2 return bar f1 = foo() print(f1) f2 = f1() print(f2())
装饰器
def deco(func): def warp(H): print(‘Joker‘) return func(H) return warp @deco def Joker(name): print(‘hello %s‘%name) Joker(‘huwang‘)
创建一个装饰器,三个函数(两个参数),
装饰器处理这两个参数的和
每一个函数打印这两个参数
def Joker(func): def warp(num1,num2): print(‘num1+num2=‘,num1 + num2) return func(num1,num2) return warp @Joker def SUM(num1,num2): print(num1,num2) SUM(100,200)
def Joker(func): def warp(num1,num2): print(‘num1+num2=‘,num1 + num2) return func(num1,num2) return warp @Joker def SUM(num1,num2): print(num1,num2) @Joker def SUM2(num1,num2): pass SUM(100,200) SUM2(1,2)
ef Joker(func): def warp(num1,num2,num3): num = num1 + num2 return func(num1,num2,num) return warp #装饰器将前两个数字求和,函数本身的第三个参数乘上这个和 @Joker def SUM(num1,num2,num3): print(num3) SUM(10,2,3)
def Joker(func): def warp(n1,n2,n3): num = n1 + n2 return func(0,num,n3) return warp #装饰器将前两个数字求和,函数本身的第三个参数乘上这个和 @Joker def SUM(num1,num2,num3): print(num1,num2,num3) print(num2 * num3) SUM(10,2,3)
创建虚拟环境
conda create --name Joker python=3.7;
pip freeze
conda activate joker env_name
conda deactivate;
conda env list;
conda env remove --name env_name;
原文:https://www.cnblogs.com/yutianqi0704/p/11322416.html