Kwong 2020-03-01
""" 类定义: 关键字:class 语法: class 类名: # 类里面的代码 类名的命名规范:遵循标识符的命名规范,风格采用大驼峰命名法(每个单词的第一个字母大写) 通过类创建对象: 对象 = 类名() """ class Cat: pass class 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 = 2 kitty.gender = "母" coffee.name = "加菲猫" coffee.age = 1 coffee.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 = gender1 kitty = Cat("凯蒂猫", 2, "母猫") print(kitty.name) #这里self就等于kitty coffee = 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, "母猫")