(一)类与对象介绍

python如何先声明类 python中如何声明类和对象_实例方法

python如何先声明类 python中如何声明类和对象_pycharm_02

(二)类和对象的深入 

 

python如何先声明类 python中如何声明类和对象_实例方法_03

 1,两大编程思想

 

python如何先声明类 python中如何声明类和对象_python_04

 2,类和对象的创建

(1)类的创建

python如何先声明类 python中如何声明类和对象_python如何先声明类_05

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)对象的创建

python如何先声明类 python中如何声明类和对象_实例方法_06

上图中实例对象是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,类属性,类方法,静态方法

 

python如何先声明类 python中如何声明类和对象_实例方法_07

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,动态绑定属性和方法

python如何先声明类 python中如何声明类和对象_python如何先声明类_08

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方法

(三)总结

python如何先声明类 python中如何声明类和对象_python如何先声明类_09