文章目录
类的定义
用class语句来创建一个类
class student:
pass #空语句,起到占位作用
if __name__=='__main__':
stu=student()#创建student对象,并将创建的对象赋给变量stu
print(stu)
#输出为这个对象所占的内存空间的首地址
基于类创建对象,运行的结果如图
关于对象
类的属性
1.创建student类包含name属性,创建的对象自动获取,在对象不设置属性是,默认为类的属性值。
class Student:
name="unkown"
if __name__=='__main__':
print("输出:",Student.name)
stu1=Student()#创建student对象stu1
stu2=Student()#创建student对象stu2
print("输出stu1 %s,stu2 %s"%(stu1.name,stu2.name))
2.当类的属性值改变时,对象的默认属性值也会改变
class Student:
name="unkown"
if __name__=='__main__':
print("输出:",Student.name)
stu1=Student()#创建student对象stu1
stu2=Student()#创建student对象stu2
print("输出stu1 %s,stu2 %s"%(stu1.name,stu2.name))
Student.name="未知"
print("输出:",Student.name)
print("stu1 %s,stu2 %s"%(stu1.name,stu2.name))
3.当对象的属性赋值时,替换掉默认的属性值,例如给stu1的name赋值为李二
class Student:
name="unkown"
if __name__=='__main__':
print("输出:",Student.name)
stu1=Student()#创建student对象stu1
stu2=Student()#创建student对象stu2
print("输出stu1 %s,stu2 %s"%(stu1.name,stu2.name))
Student.name="未知"
print("输出:",Student.name)
print("stu1 %s,stu2 %s"%(stu1.name,stu2.name))
stu1.name="李二"
stu2.name="王武"
print("第22行输出:",Student.name)
print("第23行输出stu1 %s,stu2 %s"%(stu1.name,stu2.name))
4.单独为某个对象设置属性,其他的对象的属性不会增加
class Student:
name="unkown"
if __name__=='__main__':
print("输出:",Student.name)
stu1=Student()#创建student对象stu1
stu2=Student()#创建student对象stu2
print("输出stu1 %s,stu2 %s"%(stu1.name,stu2.name))
Student.name="未知"
print("输出:",Student.name)
print("stu1 %s,stu2 %s"%(stu1.name,stu2.name))
stu1.name="李二"
stu2.name="王武"
print("第22行输出:",Student.name)
print("第23行输出stu1 %s,stu2 %s"%(stu1.name,stu2.name))
stu1.age='19'
print("第25行输出stu1姓名为%s年龄为%s "%(stu1.name,stu1.age))
print("第26行输出stu2姓名为%s年龄为%s "%(stu1.name,stu2.age))
print("第26行输出stu2姓名为%s年龄为%s "%(stu1.name,stu2.age))
可以看到当输出为stu2.age,student.age的时候,程序报错。
私有属性
类内访问的到,类外无法直接访问的属性,定义的方法为两个__name
例如:
class Student:
name="未知"
__id="unknown" #定义__id私有变量
def Setinfo(self,newname,newid)