【笔记】实例属性、实例方法
实例属性实例属性是从属于实例对象的属性,也叫“实例变量”。使用要点如下:
1、一般在__init__()方法中通过如下代码定义:self.实例属性名 = 初始值
2、在本类的其他实例方法中,也是通过self进行访问:self.实例属性名
3、创建实例对象后,通过实例对象访问:obj01 = 类名()#创建对象,调用__init__()初始化属性
obj01.实例属性名 = 值#可以给已有属性赋值,也可以新增属性
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有解释器自动传参。
实例方法调用的本质:
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()一样的效果 和上次的类、构造函数是不是一样的 xfmiao 发表于 2021-6-23 11:45
和上次的类、构造函数是不是一样的
这个是在类里面的,实际属性基本上就是构造函数里的形参,方法就是类里面的函数
页:
[1]