对于定义类时,参数self到底用来干什么。其实当你使用第二段代码中c来调用set_name时,c会直接传入到set_name的第一个参数中(不管你第一参数叫什么名字),由于传入的是类自身,所以习惯性将第一个参数命名为self,命名其他也行。然后在调用时,由于第一个参数是自动传入,所以我们调用时不用再传入,而传入的信息就自动传给第二个参数以及后面的参数。
self在方法中只是一个形参,并不是关键字,可以使用别的词替换但是不推荐。
self在方法中代表的是当前这个对象自己,可以去操作成员,可以使用self在对象的内部访问成员。
self就相当于C++中的this,谁调用了这个方法,self就代表谁。
不含self(也可以是其他名字)形参的方法不能使用对象调用。
方法的分类
绑定类方法:不含self参数或者不能接收对象作为参数的方法,绑定类方法只能被类调用,而不能被对象调用。
非绑定类方法:含有self或者可以接收对象作为参数的方法
# class Person:
name = "name"
age = "age"
sex = "sex"
def sing(self):
print("唱*******************")
def dance(self):
print("跳*******************")
def rap(self):
print("rap******************")
def func(self):
print(f"self = {self}")
print(f"self.name = {self.name}")
self.dance()
def func2():
print("我是没有self的方法!只有类能调用我!")
Ja = Person()
Ja.name = "Ja"
print(f"Ja = {Ja}")
Ja.func()
Person.func2()