自定义脚本语言引擎开发纪实 - 面向对象(class)

本文详细介绍了如何在自定义脚本语言中实现面向对象特性,包括定义类的语法、构造函数__init__、析构函数__del__、类对象函数、类变量和类函数的使用。类函数的识别标准是第一个参数不是self。同时,文章提供了一个完整的自定义类实例和测试代码,展示了类的使用和操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义类的语法

class child

endclass

构造函数__init__

	func __init__(self, name, age)
		self.name = name
		self.age = age
	end

析构函数__del__

	func __del__(self)
	end

类对象函数

	func GetNameAndAge(self)
		return self.name, self.age
	end

类变量(类全局变量)

用过类名.attri访问(与python不同,也允许通过self.attri访问全局变量;所以如果有同名的全局变量,通过self.attri并不会给对象添加属性)

class child
	sum=0
	school="大二班"
endclass

类函数(类全局函数)(第一参数不是self的就归为类全局函数)

通过类名.func方法名访问

class child
	sum=0
	school="大二班"
	func GetSchool()
		return child.school
	end
	func GetSum()
		return child.sum
	end
endclass

完整的自定义类实例

class child
	sum=0
	school="大二班"
	func __init__(self, name, age)
		self.name = name
		self.age = age
		child.sum = child.sum + 1
	end
	func __del__(self)
		child.sum = child.sum - 1
	end
	func GetSchool()
		return child.school
	end
	func GetSum()
		return child.sum
	end
	func GetNameAndAge(self)
		return self.name, self.age
	end
endclass

测试代码如下

xiaoming=child("小明", 8)
yew=child("耀耀", 6)
xiaogang=child("小刚", 7)
//输出log
js.debug.log("log\tname:" + xiaoming.name + "\tage:" + xiaoming.age)
js.debug.log("log\tname:" + yew.name + "\tage:" + yew.age)
js.debug.log("log\tname:" + xiaogang.name + "\tage:" + xiaogang.age)
js.debug.log("log\t学校:" + child.school + "共有学生:" + child.GetSum() + "名")

运行结果:

[24176] log name:小明 age:8
[24176] log name:耀耀 age:6
[24176]log name:小刚 age:7
[24176] log 学校:大二班共有学生:3名

接下来,有一名学生转学了

//触发析构,类似python中的del xiaogang
xiaogang=nil

js.debug.log("log\tname:" + xiaoming.name + "\tage:" + xiaoming.age)
js.debug.log("log\tname:" + yew.name + "\tage:" + yew.age)
js.debug.log("log\tname:" + xiaogang.name + "\tage:" + xiaogang.age)
js.debug.log("log\t学校:" + child.school + "共有学生:" + child.GetSum() + "名")

输出log(xiaogang同学的信息已经找不到了,学生减少了一名)

[26856] log name:小明 age:8
[26856] log name:耀耀 age:6
[26856] log name:xiaogang.name age: xiaogang.age
[26856] log 学校:大二班共有学生:2名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值