(一)类与对象介绍
(二)类和对象的深入
1,两大编程思想
2,类和对象的创建
(1)类的创建
Student是类的名称(简称类名),类名由一个或多个单词组成,每个单词的首字母大写其余小写 (python中的规范)
对象本身具有内存空间,数据类型,数值
class Student: #类名由一个或多个单词组成,每个单词的首字母大写其余小写 (python中的规范)
native_place="abc" #直接写在类里的变量,是类属性
#初始化方法
def __init__(self,name,age): #()中的self是实例对象,name、age是局部变量
self.name=name #self.name称为实例属性,赋值操作,将局部变量name的值赋给实例属性
self.age=age
#实例方法
def eat(self): #定义类的实例方法,和函数定义类似,实例方法要写self,即实例对象
print("吃饭")
#静态方法
@staticmethod #静态方法前用@staticmethod修饰
def method(): #静态方法中不能写self
print("使用静态方法")
#类方法
@classmethod #类方法前用@classmethod修饰
def cm(cls): #类方法要写cls,即类对象
print("类方法")
①直接写在 类里但在方法外 的变量 称为 类属性
②初始化方法__init__(self,name,age)有默认参数self(指实例对象),详解见上方代码注释
③def在 类里面 是类的实例方法,在 类的外面是函数
④静态方法 要 用@staticmethod修饰,类方法 要 用@classmethod修饰
⑤实例方法()内必须是self对象(实例对象,默认参数),静态方法()必须不写self,类方法()要写cls(类对象,默认参数)
(2)对象的创建
上图中实例对象是stu, 类对象是Student
class Student: #类名由一个或多个单词组成,每个单词的首字母大写其余小写 (python中的规范)
native_place="abc" #直接写在类里的变量,是类属性
#初始化方法
def __init__(self,name,age): #()中的name,age是局部变量
self.name=name #self.name称为实例属性,赋值操作,将局部变量name的值赋给实例属性
self.age=age
#实例方法
def eat(self): #定义类的实例方法,和函数定义类似,实例方法要写self
print("吃饭")
#静态方法
@staticmethod #静态方法前用@staticmethod修饰
def method(): #静态方法中不能写self
print("使用静态方法")
#类方法
@classmethod #类方法前用@classmethod修饰
def cm(cls):
print("类方法")
stu=Student("abc",20) #因为类中的初始化方法有name和age两个局部变量,因此用"abc",20初始化
#调用实例方法,由于实例方法传递的是self对象,故可由对象直接调用实例方法
stu.eat() #输出"吃饭"
print(stu.name) #输出"abc"
ptint(stu.age) #输出20
由于实例方法传递的是self对象,故可由对象直接调用实例方法
3,类属性,类方法,静态方法
class Student: #类名由一个或多个单词组成,每个单词的首字母大写其余小写 (python中的规范)
native_place="abc" #直接写在类里的变量,是类属性
#初始化方法
def __init__(self,name,age): #()中的name,age是局部变量
self.name=name #self.name称为实例属性(实例变量),赋值操作,将局部变量name的值赋给实例属性
self.age=age
#实例方法
def eat(self): #定义类的实例方法,和函数定义类似,实例方法要写self
print("吃饭")
#静态方法
@staticmethod #静态方法前用@staticmethod修饰
def method(): #静态方法中不能写self
print("使用静态方法")
#类方法
@classmethod #类方法前用@classmethod修饰
def cm(cls):
print("类方法")
#类属性的调用,类属性由所有该类的实例对象所共享
stu1=Student("abc","18")
stu2=Student("wsx","20")
print(stu1.native_place) #输出“abc”
print(stu2.native_place) #和上面一样
Student.native_place="tyu"
print(stu1.native_place) #输出“tyu”
print(stu2.native_place) #和上面一样
#类方法的调用,由于类方法传递的是cls对象即类对象,故要用类名调用类方法
Student.cm #直接输出"类方法"
#静态方法的使用方式,由于没有默认参数,故使用类名调用方法
Student.method #输出"使用静态方法"
4,动态绑定属性和方法
class Student: #类名由一个或多个单词组成,每个单词的首字母大写其余小写 (python中的规范)
native_place="abc" #直接写在类里的变量,是类属性
#初始化方法
def __init__(self,name,age): #()中的name,age是局部变量
self.name=name #self.name称为实例属性(实例变量),赋值操作,将局部变量name的值赋给实例属性
self.age=age
#实例方法
def eat(self): #定义类的实例方法,和函数定义类似,实例方法要写self
print("吃饭")
stu1=Student("张三",20)
stu2=Student("李四",30)
#动态绑定属性
stu2.gender="女"
print(stu2.name,stu2.age,stu2.gender)
print(stu1.name,stu1.age,stu1.gender)#报错,因为stu1没有gender属性
def show:
print("类之外是函数")
#动态绑定方法
stu1.show=show
print(stu1.show) #输出"类之外是函数"
print(stu2.show) #报错,因为stu2没有绑定show方法