######Python self前缀
def __init__(self):
"""
initialize your data structure here.
"""
self.stack=[]
self.stack_min=[]
def push(self, x: int) -> None:
self.stack.append(x)
if self.stack_min==[]
self.stack_min.append(x)
else:
val=min(x, self.stack_min[-1])
self.stack_min.append(val)
def pop(self) -> None:
self.stack.pop(-1)
self.stack_min.pop(-1)
def top(self) -> int:
return self.stack[-1]
def min(self) -> int:
return self.stack_min[-1]
望采纳
在 Python 中,如果要访问一个对象的属性或者方法,通常需要在属性或方法名前面加上 self 前缀。这个 self 前缀的作用是表示当前对象本身,也就是说,如果在一个对象的方法中,你要访问这个对象本身的属性或方法,那么就需要使用 self 前缀。
比如,你定义了一个类 MyClass,里面有一个属性 my_attribute 和一个方法 my_method。如果在 my_method 中要访问 my_attribute,那么就需要使用 self.my_attribute 来访问。
但是,如果你在一个方法中要访问的属性或方法不属于这个对象本身,而是来自于这个类的父类或者其它的类,那么就不需要使用 self 前缀。比如,如果你在 my_method 中要访问 str 类中的一个方法,那么就不需要使用 self 前缀,可以直接使用这个方法名来访问。
上面提到的代码中,有两处地方不需要使用 self 前缀,一处是在第 8 行的 if 语句中,应该把 self.stack_min 改成 stack_min,因为 stack_min 不属于当前对象,而是属于这个类的一个局部变量。另一处是在第 14 行的 return 语句中,应该把 self.stack_min 改成 stack_min,因为 stack_min 是一个局部变量,不属于这个对象。
这是定义在类下面的函数啊,实例每次调用类下面的函数默认会隐式把自己作为参数传进去,所以加一个self来表示这个变量是自己,self换成其他变量名也行,用self是习惯。