Python类和对象

类的定义:
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))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值