# 定义一个类
class Student:
#创建类属性
school='SDUT'
#构造方法
def __init__(self,id,name,age):
self.id=id#实例的属性
self.name=name
self.age=age
def set(this, id, name): # 定义一个设置信息的方法,this指的是当前的一个方法
this.id = id
this.name = name
def show(self): # 定义一个展示方法,无返回值
print(self.id, self.name,self.age)
def __str__(self):#定义一个tostring方法,注意返回是一个字符串
return str(self.id)+str(self.name)+str(self.age)
@classmethod
def test(cls):#cls代表当前的类,可以随便取名
print(cls.school)#只能调用类属性,不能调用对象属性
@staticmethod#定义静态方法,不用写参数,这是与类方法的区别
def test1():
print("test1静态方法:"+Student.school)
# @staticmethod#定义静态方法,写参数,但是调用要传入对应参数
# def test1(cls):
# print("test1静态方法:"+cls.school)
#调用无参构造,创建对象
# stu = Student()
# stu.set("小", 2)#创建一个实例
# stu.age=22
# stu.show()#虽然后定义属性,但是仍然可以输出年龄,不报错
#定义了带参数的构造方法,不能调用无参构造了,会报错
stu=Student(1,2,3)
stu.show()
print(stu)#如果没有tostring方法,会打印出<__main__.Student object at 0x0000023ECAFEAC88>,加上tostring方法,可以打印出具体信息
print(Student)#打印出<class '__main__.Student'>
print(Student.school)#利用类打印类的属性
print(stu.school)#利用对象实例,打印类的属性
stu.school="xxx"
print(Student.school)#利用类打印类的属性,发现没有变化
print(stu.school)#利用对象实例,打印类的属性,发现发生了变化
Student.school="000"
print(Student.school)#利用类打印类的属性,发现变化
print(stu.school)#利用对象实例,打印类的属性,发现没有变化
print(stu)
#综上所述,改变类的属性,用类改,改对象的用对象改,类和对象都有自己的命名空间
Student.test()#类对象,调用类方法
# 关于静态方法
stu.test1()
python 类的使用基础
最新推荐文章于 2024-05-27 09:32:58 发布