小结:
1、先定义类对象,再根据类对象定义实例对象
2、类属性:定义在类中,方法外的变量
3、类方法:用classmethod修饰的
4、实例方法:def __init__(self,name,age):(name age是程序员自己定义的变量),作用:将实例对象初始化
5、静态方法:用staticmethod修饰的方法
6、类属性、类方法、静态方法使用:都是:类名.方法名() or 类名.属性名 来调用
7、实例方法使用:有2种方法:1、实例对象名.方法名() 2、类名.方法名(实例对象名);如下图2所示
# 程序功能:
# 输入:
# 输出:
# 程序作者:
# 开发时间: 2022/6/7 2022/6/7
class Student:
native_place='吉林' #直接写在类里的变量,称为类属性
def __init__(self,name,age):
self.name=name #self.name称为实体属性,进行了一个赋值操作,将局部变量name的值赋给了实体属性
self.age=age
#实例方法
def eat(self):
print('学生在吃饭...')
#静态方法
@staticmethod
def method():
print('我使用了staticmethod进行修饰,所以我是静态方法')
#类方法
@classmethod
def cm(cls):
print('我是类方法,因为我使用了classmethod进行修饰')
#在类之外定义的称为函数,在类之内定义的称为方法
def drink():
print('喝水')
#创建Student类的对象
stu1=Student('张三',20)]
print('---------实例方法的使用---------')
stu1.eat()
print(stu1.name)
print(stu1.age)
print('----------------------')
Student.eat(stu1)
print('----------类属性的使用-------------')
print(Student.native_place)
print('--------类方法的使用方式--------')
Student.cm()
print('--------静态方法的使用方式--------')
Student.method()
多继承代码如下
# 程序功能:
# 输入:
# 输出:
# 程序作者:
# 开发时间: 2022/6/13 2022/6/13
class Person(object): #
def __init__(self,name,age):
self.name=name
self.age=age
def info(self):
print(self.name,self.age)
class Student(Person):
def __init__(self,name,age,stu_no):
super().__init__(name,age)
self.stu_no=stu_no
class Teacher(Person):
def __init__(self,name,age,teachofyear):
super().__init__(name,age)
self.teachofyear=teachofyear
stu=Student('张三','20','1001')
techear=Teacher('李四','34',10)
stu.info()
techear.info()
Python是动态语言
简言之:静态语言要实现多态,必须明确继承关系,然后才可以使用;但是动态语言只关心是否具有这个方法,不需要考虑类型
注意:类对象中可以定义“属性”和“方法”
而实例对象中只能定义“属性”
上图中,__init__(self,name,age)这句代码中的self是什么?答:如果Person类中,在执行__init__(self,name,age)前没有new出其他对象,则这个self就是Person类(id(self)和id(Person)相等);如果Person类中,在执行__init__(self,name,age)前有new出其他对象,如上图中new出了obj对象,则__init__(self,name,age)中的self就是obj类(id(self)和id(obj)相等)