January 30, 2026
类的高级用法示例
本文档介绍类属性与实例属性、继承与多态、以及继承标准库类等进阶用法。示例来源:doc/pikapython.com/examples/Class/。
模块简介
涵盖类/实例属性、__init__、子类重写方法、继承 PikaStdLib 等。内嵌示例:
class C:
a = 1
def __init__(self):
self.a = 2
o = C()
print(o.a)
示例代码
类参数与属性(classpar1.py)
class Test:
a = 1
b = 'test'
def __init__(self):
self.a = 2
self.b = 'pewq'
print(Test.a)
print(Test.b)
test = Test()
print(test.a)
print(test.b)
说明:Test.a、Test.b 为类属性;__init__ 中赋值的 self.a、self.b 为实例属性,实例化后访问的是实例属性(2 和 ‘pewq’)。
继承与多态(main.py)
# need core >= v1.4.0
import PikaStdLib
class people:
def do_hi(self):
print('hello i am people')
def hi(self):
self.do_hi()
class student(people):
def do_hi(self):
print('hello i am student')
class mymem(PikaStdLib.MemChecker):
def mymax(self):
print('mem used max: ' + str(self.getMax()) + ' kB')
p = people()
s = student()
p.hi()
s.hi()
mem = mymem()
mem.mymax()
说明:people 定义 do_hi 与 hi,student 继承并重写 do_hi,多态下 s.hi() 会调用子类的 do_hi。mymem 继承 PikaStdLib.MemChecker 并扩展 mymax(),演示继承标准库类。运行需固件提供 PikaStdLib 且版本满足要求。
运行结果(预期)
- 类属性输出:
1、test;实例属性输出:2、pewq。 - main.py:先输出 “hello i am people”,再输出 “hello i am student”,最后输出当前最大内存占用(单位 kB)。
注意事项
- 类属性被实例属性“遮蔽”时,通过实例访问到的是实例属性。
- 继承 PikaStdLib 等模块中的类时,需确认设备固件已包含对应模块且 API 兼容。