python学习——类,,"""类定义:关键字


"""类定义:关键字:class语法:class  类名:    # 类里面的代码类名的命名规范:遵循标识符的命名规范,风格采用大驼峰命名法(每个单词的第一个字母大写)通过类创建对象:对象 = 类名()"""class Cat:    passclass MyTestClass:    pass# 关于对象:有人叫对象,也有人叫实例# 通过类创建对象(实例化对象)kitty = Cat()print(kitty, id(kitty))coffee = Cat()print(coffee, id(coffee))

类属性和实例属性

"""这一类事物拥有的共同特征,我们通常会定义为类属性类属性:在类里面直接定义的变量,叫做类属性# 通过对象访问类属性:对象名.属性名# 通过类访问类属性:类名.属性名实例属性:每个对象的属性值都有可能不一样,就应该定义为实例属性(对象属性)实例属性的定义:对象.属性名 = 属性值"""print("------------------类属性--------------------")class Cat:    leg = "四条腿"    tail = "长尾巴"kitty = Cat()coffee = Cat()# 通过对象访问类属性:对象名.属性名print(kitty.leg)print(coffee.leg)# 通过类访问类属性:类名.属性名print(Cat.leg)print("------------------实例属性--------------------")class Cat:    leg = "四条腿"    tail = "长尾巴"kitty = Cat()coffee = Cat()# 给对象添加属性kitty.name = "凯蒂猫"kitty.age = 2kitty.gender = "母"coffee.name = "加菲猫"coffee.age = 1coffee.gender = "公"# 通过对象访问对象属性:对象名.属性名print(kitty.name)print(coffee.name)# 通过类访问类属性:类名.属性名 print(Cat.leg)

在类里面定义对象属性

"""定义在类里面的函数叫做方法:__init__方法:初始化方法,在创建对象的时候,会自动调用执行里面的代码关于方法中的第一个参数self:self代表的时对象,不用手动传,调用用改方法的时候会自动传"""# init方法的作用class Cat:    leg = "四条腿"    tail = "长尾巴"    def __init__(self, name1, age1, gender1):        """初始化对象属性"""        self.name = name1        self.age = age1        self.gender = gender1kitty = Cat("凯蒂猫", 2, "母猫")print(kitty.name)   #这里self就等于kittycoffee = Cat("加菲猫", 1, "公猫")print(coffee.name)#  定义一个学生类class Students:    attr1 = "学生"    def __init__(self, name, age, class_):        self.name = name        self.age = age        self.class_ = class_

类里面的方法

"""特征  +  行为特性:属性(类属性,和实例属性)行为:方法(类方法,实例方法),方法的本质就是类里面的函数实例方法:第一个参数是self,self代表的是对象本身,那个对象调用该方法,self就代表那个对象实例方法:只能通过对象去调用类方法:@classmethod进行装饰(标识)第一个参数是cls,cls代表的是类本身静态方法:@statictmethod进行装饰(标识)"""class Cat:    leg = "四条腿"    tail = "长尾巴"    def __init__(self, name, age, gender):        """初始化对象属性"""        self.name = name        self.age = age        self.gender = gender    def skill1(self, skill_name):        print("{}施展了抓老鼠的技能:{}".format(self.name, skill_name))    def skill2(self):        print("施展了爬树的技能")    @classmethod    def func(cls):        print(cls)        print("这个是类方法")    @staticmethod    def func2():        print("这个是静态方法")kitty = Cat("凯蒂猫", 2, "母猫")coffee = Cat("加菲猫", 1, "公猫")print(kitty.name)print(coffee.name)kitty.skill1("往前扑")coffee.skill1("从天而降")

关于方法的调用:

实例方法:只能通过对象去调用
Cat.skill2()
类方法:可以通过类和对象去调用
Cat.func()
kitty.func()
静态方法:可以通过类和对象去调用
Cat.func2()
kitty.func2()

属性的访问:

类属性:可以通过类和对象去访问
对象(实例)属性:只有对象自己能用

class Cat:    leg = "四条腿"    tail = "长尾巴"    def __init__(self, name, age, gender):        """初始化对象属性"""        self.name = name        self.age = age        self.gender = gender    def move(self):        print("快速移动")    def skill2(self):        """在方法内部,会使用到对象相关的属性,或方法,那么适合定义为对象方法"""        print("{}施展了抓老鼠的技能".format(self.name))        self.move()    @classmethod    def func(cls):        """在方法内部只会使用到类属性"""        print("这个是猫类共同特征:", cls.leg, cls.tail)    @staticmethod    def func2():        """方法内部,既不会使用类相关的属性和方法,也不会使用对象相关的属性和方法"""        print("这个是静态方法")    @staticmethod    def func11():        print("这是一个普通的函数")kitty = Cat("凯蒂猫", 2, "母猫")

python学习——类

评论关闭