class Student: # student为类的名称(类名)由一个或多个单词组成,每个单词的首字母大写,其余小写 pass print(id(Student)) print(type(Student)) native_place='吉林' # 直接写在类里的变量,称为类属性 def __init__(self,name,age): self.name=name # self.name称为实体属性,进行了一个赋值操作,将局部变量的name的值赋给实体属性 self.age=age #创建Student类对象 stu1=Student('张三',20) stu1.eat() Student.eat(stu1)
这段代码中定义了类和类的方法,但是在类定义结束后,调用了类的实例和方法,应该将实例和方法的调用放在类定义后面,而不是在类定义中间。同时,类属性也应该在类定义中定义完毕后才能进行访问。
以下是修改后的代码:
class Student:
native_place = '吉林'
def __init__(self, name, age):
self.name = name
self.age = age
def eat(self):
print(f"{self.name} is eating...")
# 创建Student类对象
stu1 = Student('张三', 20)
stu1.eat() # 调用实例方法
Student.eat(stu1) # 通过类调用实例方法
注意,在类定义结束后,首先创建了一个Student类的实例stu1,然后通过实例调用了eat()方法;接着通过类名调用了eat()方法,并传入了stu1作为参数。这两种方法调用的结果是一样的,都是输出“张三 is eating...”。