个人随手笔记:关于python的一些问题

最近在查阅代码,发现python有些奇怪的东西。按照自己理解记下笔记,以备需要时参考

class Problem:
    def __init__(self, initial, goal=None):
        self.initial = initial
        self.goal = goal
    def run(self):
        print (self.initial(),self.goal)
        
    
class Air(Problem):
    def __init__(self, initial, goal):


        #self.state_map = initial.pos + initial.neg
        Problem.__init__(self, self.initial_state_TF,goal=goal)
    def initiala(self):
        return 'abc’

a=Air(4,5)
a.run()

如果去掉problem后的__init__,运行程序,可以运行.run()但是所有初始化的参数不正确。所以继承时初始化被继承class的参数需要如此操作(最初学习时并没有碰到过如此问题的解释)

————————————————————————

然后是重头戏,python3貌似允许一种鬼畜的行为,实在找不到参考,只能自己试出来结果

class FluentState():
    def __init__(self, pos_list, neg_list):
        self.pos = pos_list
        self.neg = neg_list

class Problem:
    def __init__(self, initial, goal=None):
        self.initial = initial
        self.goal = goal
    def run(self):
        print (self.initial(),self.goal)
        
    
class Air(Problem):
    def __init__(self, initial:FluentState, goal):


        self.state_map = initial.pos + initial.neg
        Problem.__init__(self, self.initial_state_TF,goal=goal)
    def initiala(self):
        return 'abc’

a=Air(FluentState([1,2], [3,4]), 5)
a.run()

经测试initial:FluentState传进去的是一个实例(之前以为是一种新的鬼畜继承方法)。3的写法比较奇怪,实际上2直接去掉冒号右边的就可以了,3也可以正常执行。

感觉类似于->这种annotation。最讨厌3这种装x行为了。


关于->

class Air(Problem):
    def __init__(self, initial:FluentState, goal):


        self.state_map = initial.pos + initial.neg
        Problem.__init__(self, self.initial_state_TF,goal=goal)
    def initiala(self)->str:
        return 'abc’

实际上->str毫无意义,写->int, ->list, 或者->Problem都可以,不会影响任何结果。但如果是随便输入的字符串,则会报错!

___________________________________

关于函数

def test(x,y,z):
    def suma(x,y):return str(x+y*10)
    def suba(x,y):return str(x-y*10)
    return suma(x,y)+suba(x,y)+str(z)
print test(1,2,3)

才知道函数内部还可以嵌套函数,而且运行正确,mark一下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值