参看抖音程序员zhenguo,作为学习记录,以备查询
# 创建你的第一个属性
class Dog():
def __init__(self, name):
# 创建第一个对外公开的属性
self.name = name
# 创建第一个仅内部使用的属性
self.__color = "白色"
def run_signal(self):
print(f"{self.name},{self.__color}")
hsq = Dog("哈士奇")
print(hsq.name)
hsq.run_signal()
"""
哈士奇
哈士奇,白色
"""
# 创建你的第一个类方法
class Dog:
begin = 2000
def __init__(self, name):
self.name = name
@classmethod
def get_age(cls, birthday):
return birthday-cls.begin
print(Dog.get_age(2021))
"""
21
"""
#类继承
class A:
def run(self):
cn = type(self).__name__
print(f"{cn} running...")
class A1(A):
pass
A1().run()
"""
A1 running...
"""
#创建A1对象时,先走基类的init
class A:
def __init__(self, name):
self.name = name
print("A的构造类")
class A1(A):
pass
if __name__ == '__main__':
a1 = A1("哈士奇")
"""
A的构造类
"""
#复用基类A的init
class A:
def __init__(self, name):
self.name = name
print("执行A的init实现部分")
class A1(A):
def __init__(self, name):
# 复用基类A的init
super().__init__(name)
#然后再init自己的构造行为
print("A1新的init实现部分")
if __name__ == '__main__':
a1 = A1("哈士奇")
"""
执行A的init实现部分
A1新的init实现部分
"""
# 覆盖基类方法,方法名必须和A的方法同名
class A:
def run(self):
print("执行A类的run方法")
class B(A):
def run(self):
print("执行B类的run方法")
B().run()
"""
执行B类的run方法
"""
#reduce 函数
from functools import reduce
print(reduce(lambda x, y: x+y, [3, 1, 2, 3, 4, 5]))
"""
18
"""
# 装饰器hello world
def f(h):
def g():
print("hello world")
h()
return g
@f
def w():
print("我是w")
@f
def y():
print("我是y")
w()
"""
hello world
我是w
"""
y()
"""
hello world
我是y
"""
#生成器经典案例
def fibo2(n):
a, b = 0, 1
for _ in range(n):
yield a
a, b = b, a+b
l = list(fibo2(10))
print(l)
"""
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
"""