实例属性
实例属性是从属于实例对象的属性,也叫“实例变量”。使用要点如下:
1、一般在__init__()方法中通过如下代码定义:self.实例属性名 = 初始值
2、在本类的其他实例方法中,也是通过self进行访问:self.实例属性名
3、创建实例对象后,通过实例对象访问:obj01 = 类名() #创建对象,调用__init__()初始化属性
obj01.实例属性名 = 值 #可以给已有属性赋值,也可以新增属性
[Python] 纯文本查看 复制代码 class Student: #类名一般首字母大写,多个单词一般使用驼峰原则
def __init__(self,name,score):#构造函数名字固定为__init__(self),self必须有,且放在首位
self.name=name
self.score=score
def say_score(self): #self必须放在首位
print('{0}的分数为:{1}'.format(self.name,self.score))
s1 = Student('cys',80)
s1.say_score()
s1.age = 18 #可以新增属性
s1.salary = 5000
print(s1.salary)
s2 = Student('jdq',15)
print(s2.score)
创建类对象时,内存中会先生成一个类对象,然后使用__new__()方法生成一个新的对象,我们使用__init__()把新生成的对象进行初始化,我们把Student类赋给了s1,就会把新生成的这个对象的内存指向s1,这时s1就相当于Student类,可以直接调用类里面的实例属性,也可以新增属性,但是注意实例属性是从属于实例对象的,一旦这个实例对象被删除或者生成一个新的对象,都无法使用这个对象里面的属性。
实例方法
实例方法是从属于实例对象的方法,实例方法的定义格式如下:
def 方法名(self,[,形参列表])
函数体
方法的调用格式如下:
对象.方法名([实参列表])
要点:1、定义实例方法时,第一个参数必须为self。
2、调用实例方法时,不需要也不能给self传参。self有解释器自动传参。
实例方法调用的本质:
[Python] 纯文本查看 复制代码 s1 = Student('cys',80)
s1.say_score()
解释器翻译时会翻译成Student.say_score(s1)。这是因为类中方法是共享的,假设创建类时新建对象的内存地址是123,这里面的方法和类中的方法代码是一样的,我们赋值给s1,就是把123给了s1,使用s1调用方法时系统自动传参传的是s1的内存地址,也就是123,而在Student.say_score(s1)里面,是直接调的类中的方法,然后实参是s1,s1的地址又是123,所以实际是和s1.say_score()一样的效果 |