类,可以用来描述某特定群体,因为群体具有相似性,比如人都有姓名,性别,年龄等,这些称为属性;此外人可以吃饭、交流、运动等,这些称为方法;
程序中定义一个类,就包括属性以及方法,属性一般指一些变量,方法和函数一样。
下面是定义一个dog类
class Dog(): #Dog为类名,一般首字母大写 此外这里可以带括号()也可以不带
#注意 巨坑 这里是两边各两条下划线
def __init__(self,name,age): #类似于c++的构造函数,类实例化时被自动调用
self.name=name #表示定义属性self.name (就是现在定义的)
self.age=age
def sit(self):
print(self.name+" is now sitting")
def roll(self):
print(self.name+" is now rolling")
#实例化类
my_dog=Dog('gougou',2) #给构造函数_init_除了self的后面两个形参
print("my dog's name is "+my_dog.name) #访问实例的属性
print("and he is now "+str(my_dog.age)+" years old"))
my_dog.sit() #访问实例的方法
my_dog.roll()
类的继承,子类继承父类,父类也称为超类(superclass)
#同文件内 big_dog也是dog类,所以可以继承
class Big_dog(Dog):
def __init__(self,name,age,pounds):
super().__init__(name,age) #表示调用父类的构造函数__init__进行复制
self.pounds=pounds
def show_weight(self):
print(self.name+"'s weight is "+str(self.pounds))
my_bigdog = Big_dog('gougou', 2,15)
my_bigdog.roll()
my_bigdog.show_weight()
#重写父类的方法 及子类定义时使用与父类中的方法重名即可
class Stupid_dog(Dog):
def __init__(self,name,age)
super().__init__(name,age)
def sit(self):
print("this stupid dog didn't make it")
其次呢,可以将其他类的实例作为一个类的属性
#假设Eyes是一个类
class Eyes:
def __init__(self,eyecolor):
self.eyecolor=eyecolor
def show_eye(self):
print("color is "+self.eyecolor)
class Dog:
def __init__(self,name,age,eyecolor):
self.name=name
self.age=age
self.eyes=Eyes(eyecolor)
my_dog=Dog('gougou',2,'gold')
my_dog.eyes.show_eye()
从其他文件导入类,如在新文件my_dog.py中导入dog.py中的Dog类
from dog import Dog
my_dog=Dog('gougou',2)
#当然也可以导入一个模块中的所有类,直接import 模块名 就行了
python标准库
标准库是python’自身安装就带有的库,通常包含如下方面:
操作系统接口: import os
文件通配符:import glob
命令行参数:import sys
字符串正则匹配:import re
数学:import math
访问 互联网:
日期和时间: from datetime import date
数据压缩: import zlib
性能度量:from timeit import Timer
测试模块:
标准库详见https://www.runoob.com/python3/python3-stdlib.html及https://pymotw.com/