python 面向对象
类的定义与对象实例化
类的定义
- class关键字
- 类名:多个单词的首字母都大写,驼峰命名
- 父类名:可以是多个,用逗号隔开,可选,没有父类名时整个括号部分可以省略不写
- 类的注释信息:前后各3个单引号或双引号
- 属性:在类中,方法外定义的变量称之为属性,名词或形容词,用来描述实例的状态和数据
- 方法:在类体中定义的函数,称之为方法,动词,用来表示实例的行为
类的属性与方法
类的方法
实例方法: 定义类的行为和功能实现
- 作用: 提供每个类的实例共享的方法
- 语法:def 方法名(self, 参数列表)
- 访问:实例.方法名(参数列表)
class Human:
# 定义实例方法
def stu(self,cpi):
print(f"正在学习{cpi}")
# 实例化对象
aa = Human()
# 通过实例访问实例方法
aa.stu("C#") # 结果是:正在学习C#
构造方法:进行实例化操作
- 作用:实例化对象
- 语法:def init(self, 参数列表)
- 访问:类名(参数列表)
# 类的声明
class Human(object):
'''人类'''
# 定义属性,即类属性
massage = '这个是类属性'
# 定义构造方法
def __init__(self, name, age):
# 实例变量
self.name = name
self.age = age
print("这是构造方法")
# 实例化对象
ss = Human('das',12) # 结果是 这是构造方法
# 通过实例访问类属性
print(ss.massage) # 结果是 这个是类属性
# 通过实例访问实例属性
print(ss.name) # 结果是 das
print(ss.age) # 结果是 12
# 通过类名访问类属性
print(Human.massage) # 结果是 这个是类属性
类方法
- 作用:可以操作类的详细信息
- 语法:@classmethod
- 访问:类名.类方法名(参数列表)
class Human:
# 类属性
population = 0
# 类方法
@classmethod
def born(cls):
print("This is 类方法")
cls.population +=1
# 通过类名访问类方法
Human.born() # 结果是:This is 类方法
print(Human.population) # 结果是: 1
静态方法
- @staticmethod
- 不能且不需要访问类的数据
class Human:
# 定义静态方法
@staticmethod
def stu():
print("这个是静态方法")
# 通过类名访问静态方法
Human.stu() # 结果是: 这个是静态方法