我在学习状态模式的时候
class state:
def program(self, h):
pass
class morning(state):
def program(self, h):
if h.hour < 12:
print("精力充沛")
else:
h.setstate(noon())
h.program()
class noon(state):
def program(self, h):
if h.hour < 13:
print("午休")
else:
h.setstate(afternoon())
h.program()
class afternoon(state):
def program(self, h):
if h.hour < 18:
print("下午还行")
else:
h.setstate(evening())
h.program()
class evening(state):
def program(self, h):
if h.finish:
h.setstate(go_home())
h.program()
elif h.hour < 21:
print("加班")
else:
h.setstate(sleep())
h.pregram()
class go_home(state):
def program(self, h):
print("下班回家")
class sleep(state):
def program(self, h):
print("睡觉")
class work:
state = morning()
finish = False
hour = 8
def setstate(self, state):
self.state = state
def program(self):
self.state.program(self)
if __name__ == "__main__":
a = work()
a.hour = 18
a.finish = True
a.program()
发现work类的program函数里的self.state.program的括号里必须要有self,没有的话就报错,这个self是什么意思,实在搞不懂,希望各位可以给解答一下,感谢
因为这个方法里面要传参数,方法需要传递参数的时候不传递参数就会报错
目录* 1、self的作用
2、self的使用注意事项
(1)self代表类的实例,而非类
(2)self不必非写成self,只是一种规范。
(3)类中方法的形参中一定要写self,包括内置函数
(4)__init__函数中,要把接收到的参数赋值到self中,提供全类使用
(5)同一个类中调用其他的方法时需要加self
(6)self总是指调用时的类的实例,在继承时中也一样
(7)self与私有变量的用法
(8)总结
————————————————
版权声明:本文为CSDN博主「洛蕾」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_45562973/article/details/123065042