类的定义:
class 类名:#类的名称它的首字母必须大写。
类的属性 #用于描述事物的特征
类的方法 #用于描述事物的行为
类是对某一类事物的抽象描述,而对象是现实中该类事物的个体。
class People():#类里面可以包含变量、函数
#__init__方法:初始化对象
def __init__(self,name,age):
#类里面函数第一个参数必须是self,代表自己先不管
self.name = name#属性值赋值给属性名
self.age = age
#self代表自身,".name"给里面添加一个name变量
def sit(self):
print(self.name+"他在玩游戏...")
def watch(self):
print(self.name+"又好像在看电影...")
#实例 实际例子 又叫对象
#对象名 也是一个变量名
man = People('张三',15)
#通过类名加上括号与括号内属性参数需对应
woman = People('桃花',16)
print(man.age)
print(woman.name)#访问属性
#self代表当前对象,这样理解当我们创建man时self代表man
man.sit()
woman.sit()
man.watch()
woman.watch()
#访问类里面的函数
给类的属性添加默认值与修改:
class Car():
def __init__(self,make,model,year):
self.make = make
self.model = model
self.year = year
self.mileage = 0 #给属性添加默认值
def des(self):
print(self.year+' '+self.make+' '+self.model)
def get_mil(self):
print('这个车已经跑了'+str(self.mileage)+"KM!")
#str转换成字符串,上面那里是整数,读取默认值
def set_mil(self,mileage):#属性在类里面设置方便管控
if self.mileage<mileage:
self.mileage = mileage#限制里程数只能调大
def add_mil(self,mileage):#增加里程
if mileage>=0:#控制数字正负
self.mileage += mileage
car1 = Car('奥迪','Q7','2019')
#上面是相加的,默认传递字符串
car1.des()
car1.set_mil(100)#访问类里面的函数修改里程
car1.get_mil()
#car1.mileage = 100
#修改属性值 直接修改在代码量多时不建议
car1.add_mil(120)
#测试增加里程
car1.get_mil()
继承:
class People():
def __init__(self,name,age):
self.name = name
self.age = age
def eat(self):
print(self.name+'正在吃饭!')
def sleep(self):
print(self.name+'正在睡觉!')
class Person(People):
#继承:使用一个类继承另外一个类上述Peole是父类、Peson是子类
def __init__(self,name,age,title):
self.title = title
#继承父亲只需让父亲里面这些属性初始化就好了
super().__init__(name,age)
#调用父类里面的初始化方法也叫构造方法
#子类有自己的属性是需要写init方法
def teach(self):
print(self.name+'正在上课!')
t1 = Person('zhangsna',40,'高级教师')
t1.eat()
t1.teach()
#当父类与子类方法重名,优先调用子类
将类的实例作为属性:把一个类的对象作为另一个类的属性,也可以说类的组合。
class Weapon():
def __init__(self,damage,bullet_count):
self.damage = damage
self.bullet_count = bullet_count
def attack(self):
self.bullet_count -= 1
print('发射了一颗子弹,攻击力为'+str(self.damage))
class Role():
def __init__(self,name,lv,role_type,damage,bullet_count):
self.name = name
self.lv = lv
self.role_type =role_type
self.weapon = Weapon(damage,bullet_count)
#利用了Wepaon类创建了对象,再赋值给Role的一个属性。
#也就是说Role的weapon属性是一个对象
def move(self):
print(self.name+'正在移动...')
def attack(self):
self.weapon.attack()#调用
role = Role('张老头呀',10,'漫游枪手',1000,500)
role.move()
role.attack()#测试效果
通过模块导入类:
import 文件名;
from 文件名 import 类名称。
Python函数的一些小练习:
def test(i):
isNull = False
for t in i:
if t. strip()=='':
isNull=True
break
return isNull #判断参数是否含空字符
print(test(['qwdasd','sadw','']))
def fun(l):#提取列表中奇数索引位置元素
li=[]
for t in range(0,len(l)):
if t%2==1:
li.append(l[t])
return li
l = [1,2,3,4,5,6,7,8]
print(fun(l))
def test(d):
for k in d.keys():
if len(d[k])>2:
d[k]=d[k][0:2]
return d
d = {'name':'pph','hobby':['篮球','足球','唱歌']}
print(test(d))#字典截取
def f(n):#求斐波拉契数列
if n==1 or n==2:
return 1
res = f(n-1)+f(n-2)
return res
print(f(10))