类 就是一类东西的总称,创建一个类,然后在类里面创建对象,这些对象就会自动具有该类的所有属性
class Dog(): #创建类 给出类名Dog——根据约定,在Python中,首字母大写的名称指的是类。
def __init__(self, name, age): #注意前后各有两个下划线,代表这是默认的方法,在该类下创建任何对象时,都将自动运行该方法。
"""初始化属性name和age"""
"""第一个参数self由程序自动给出,不需要赋值,
它代表的是我们创建的对象,作为self参数,代进类定义里的所有函数之中,从拥有该类所有属性
因此,类定义里的每一个函数,都有一个self参数,而且必须放在第一位"""
self.name = name
self.age = age #由于初始化方法自动运行,每一个小狗对象都将有一个名字和年龄
def sit(self):
"""模拟小狗被命令时蹲下"""
print(self.name.title() + " is now sitting.")
def roll_over(self):
"""模拟小狗被命令时打滚"""
print(self.name.title() + " rolled over!")
mydog=dog('harry',6) #类的实例化——创建一个实例
#在创建实例时,必须要给出__init__方法所需的所有参数,否则报错
print(mydog.name) #>>>harry 该实例拥有了name属性,可以访问
类的继承——将一个类的属性赋给另一个类(而不是给它的实例们),被继承的类是父类,继承的类是子类
#定义父类
class Man():
def __init__(self,sex,age):
self.sex=sex
self.age=age
#定义子类
class Chinese(Man): #注意:定义子类与父类的区别就是括号里要给出父类名称
def __init__(self,sex,age,nation):
super().__init__(self,sex,age) #super就是父类的意思
self.nation=nation
zhangsan=Chinese('F',28,'China')
print(zhangsan.sex) >>>'F' #引用父类的属性,方法也可以引用,在此不予列出
print(zhangsan.age) >>>28
print(zhangsan.nation) >>>'China'
#在子类的定义里如果有跟父类定义里方法名一样的方法,相当于修改了继承而来的方法,以后的调用将以子类定义内的方法为准
类的嵌套:
通过将一个类的属性,定义为另一个类,可以实现嵌套
self.attr = anotherclass()
类的模块化:将定义好的类存为一个单独的.py文件,使其变成一个独立的模块
模块导入: from module_name import class_name1, class_name2
TIPS:
- 命名原则:类名应采用驼峰命名法,即将类名中的每个单词的首字母都大写,而不使用下划线。实例名和模块名都采用小写格式,并在单词之间加上下划线。
- 注释:定义类后给出注释,简要描述其功能