python学习——类
Posted 2chun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习——类相关的知识,希望对你有一定的参考价值。
"""
类定义:
关键字: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, "母猫")
以上是关于python学习——类的主要内容,如果未能解决你的问题,请参考以下文章