博主信息
博文 29
粉丝 0
评论 0
访问量 24414
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
python类(继承、构造函数)
CC
原创
1221人浏览过

类的定义

定义类:类名怎么定义?使用class 来定义一个类
class 类名:类名- -般需要遵守大驼峰命名法,每一个单词的首字母都大写

  1. class <类名>:
  2. class <类名>(object):
  1. class Student(object): # 关注这个类有哪些特征和行为
  2. #在_ init_ 方法里,以参数的形式定义特征,我们称之为属性
  3. def __init__ (self, name, age, height):
  4. self.name = name
  5. self.age = age
  6. self.height = height
  7. #行为定义为一个个函数
  8. def run(self):
  9. print('正在跑步')
  10. def eat(self):
  11. print('正在吃东西')
  12. #Student 类创立了两个实例对象s1,s2
  13. #Student() ==>会自动调用_ init__方法
  14. s1 = Student('小朋',18,1.75)
  15. s2 = Student('小美丽',17,1.65)
  16. s1.run()
  17. s2.eat()

self解释

  1. class Student(object):
  2. def __init__(self, x, y):
  3. self.name = x
  4. self.age = y
  5. # Student('张三',18) 这段代码具体做了什么呢?
  6. #1.调用__new__ 方法,用来申请内存空间
  7. # 2.调用_ .init_ 方法传入参数,将self 指向创建好的内存空间,填充数据
  8. # 3.变量s1也指向创建好的内存空间
  9. s1 = Student('张三',18)
  10. print('s1的名字是',s1. name)
  1. class Student(object):
  2. def __init__(self, x, y):
  3. self.name = x
  4. self.age = y
  5. def say_hello(self):
  6. print('大家好,我是', self.name)
  7. # Student('张三',18) 这段代码具体做了什么呢?
  8. # 1.调用__new__ 方法,用来申请内存空间
  9. # 2.调用_ .init_ 方法传入参数,将self 指向创建好的内存空间,填充数据
  10. # 3.变量s1也指向创建好的内存空间
  11. s1 = Student('张三', 18)
  12. s1.say_hello()
  13. print('s1的名字是', s1.name)
  14. print('----')
  15. s2 = Student('jack', 21)
  16. s2.say_hello()

所有类实例能共享类属性

  1. class renlei:
  2. #类属性,能被所有实例共享
  3. shengao=1.75
  4. def __init__(self):
  5. print('我是人')
  6. def say(self):
  7. print('能说')
  8. return"漂亮"
  9. zhonguoren=renlei()
  10. print(zhonguoren.say())
  11. print(zhonguoren.shengao)

魔法方法特点

1.不需要手动调用,会在合适的时机自动调用
2.这些方法,都是使用开始,使用 结束 3.方法名都是系统规定好的,在合适的时机自己调用

  • 构造方法
    1.构造方法:类开始实例化的时候被最先初始化的方法。
    2.定义类的构造方法使用: init 魔法关键字。
  1. class Person(object):
  2. #在创建对象时,会自动调用这个方法
  3. def __init__(self, name, age):
  4. print('_ init_ 方 法被调用了')
  5. self.name = name
  6. self.age= age
  7. p = Person(' zhangsan', 18)
  • 构造方法模板
  1. class Amiml:
  2. # 构造方法
  3. def __init__(self,lb):
  4. self.lb=lb
  5. def getlb(self):
  6. return self.lb
  7. amiml=Amiml("鸟类")
  8. print(amiml.lb)

继承

  1. class A(object):
  2. def demo_a(self):
  3. print('我是A类里的方法demo_ _a')
  4. class B(object):
  5. def demo_b(self):
  6. print( '我是B类里的方法demo_ _b')
  7. class C(A,B):
  8. pass
  9. c=C ()
  10. c.demo_a()
  11. c.demo_b()

如果子类存在构造方法,I继承关系成立后,最终的结果也如果子类存在构造方法,I继承关系成立后,最终的结果也

  1. class Amiml:
  2. # 构造方法
  3. def __init__(self,lb):
  4. self.lb=lb
  5. def getlb(self):
  6. return self.lb
  7. class Dog(Amiml):
  8. def __init__(self):
  9. print("汪汪")
  10. amiml=Amiml("鸟类")
  11. print(amiml.lb)
  12. dog=Dog()

添加实例属性

  1. class Person:
  2. def __init__(self, name, age):
  3. self.name = name
  4. self.age = age
  5. p = Person("皮皮", 1)
  6. # 动态添加属性
  7. # 1,以下是添加实例属性的两种方式
  8. p.address = "义乌"
  9. setattr(p, "gender", "男") # 为p对象添加了一个名为gender的属性,存储的值为“男”
  10. print("名字是%s 年龄是%d 地址是%s 性别是%s" % (p.name, p.age, p.address, p.gender))
  11. print("名字是%s 年龄是%d 地址是%s 性别是%s" % (p.name, p.age, p.address, getattr(p, "gender")))
  12. # 2,添加对象属性 类名.属性名
  13. Person.CLS_ID = 110
  14. print(p.CLS_ID)
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学