请选择 进入手机版 | 继续访问电脑版

我爱科技论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 429|回复: 0

[技术分享] 【Python学习】Python面向对象编程

[复制链接]

696

主题

743

帖子

7927

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
7927

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

发表于 2018-4-28 19:18:07 | 显示全部楼层 |阅读模式
实例1
  1. class Person:
  2.     # 相当于构造函数
  3.     def __init__(self, name):
  4.         self.name = name
  5.     def say_hello(self):
  6.         print('Hello, how are you today?', self.name)


  7. # 创建对象并调用对象的方法
  8. p = Person('haha')
  9. p.say_hello()

  10. # 创建一个匿名对象并且调用它自己的方法
  11. Person('Xiuxiu').say_hello()
复制代码
实例2
  1. # coding = UTF-8

  2. class Robot:
  3.     """
  4.     表示一个带有名字的机器人
  5.     """

  6.     # 定义一个类变量,用于统计机器人的数量
  7.     population = 0

  8.     def __init__(self, name):
  9.         """初始化数据"""
  10.         self.name = name
  11.         print('(Initializing{})'.format(self.name))

  12.         # 对象创建以后数量就增加1
  13.         Robot.population += 1;
  14.     def die(self):
  15.         """对象挂了"""
  16.         print("{} is being destroyed!".format(self.name))

  17.         Robot.population -= 1

  18.         if Robot.population == 0:
  19.             print('{} was the last one '.format(self.name))
  20.         else:
  21.             print('There are still {:d} robots working '.format(Robot.population))
  22.     def say_hi(self):
  23.         """机器人的问候"""

  24.         print('Welcome'.format(self.name))



  25.     # 这是一个类方法,可以不用实例化就可以直接调用这个方法(相当于是一个静态方法)
  26.     @classmethod
  27.     def how_many(cls):
  28.         """打印出当前的人口数量"""
  29.         print('We have {:d} robots'.format(cls.population))


  30. droid1 = Robot("R2-D2")
  31. droid1.say_hi()
  32. Robot.how_many()

  33. droid2 = Robot("C-3PO")
  34. droid2.say_hi()
  35. Robot.how_many()

  36. print("\nRobots can do some work here.\n")
  37. print("Robots have finished their work. So let's destroy them.")
  38. droid1.die()
  39. droid2.die()

  40. Robot.how_many()
  41. # 输出文档字符串
  42. print(droid1.__doc__)
复制代码
实例3:对继承的理解
  1. # coding = UTF-8

  2. class SchoolMember:
  3.     '''代表任何学校里的成员。'''
  4.     def __init__(self, name, age):
  5.         self.name = name
  6.         self.age = age
  7.         print('(Initialized SchoolMember: {})'.format(self.name))
  8.     def tell(self):
  9.         '''告诉我有关我的细节。'''
  10.         print('Name:"{}" Age:"{}"'.format(self.name, self.age), end=" ")


  11. class Teacher(SchoolMember):
  12.     '''代表一位老师。'''
  13.     def __init__(self, name, age, salary):
  14.         # 开始实现继承
  15.         SchoolMember.__init__(self, name, age)
  16.         self.salary = salary
  17.         print('(Initialized Teacher: {})'.format(self.name))
  18.     def tell(self):
  19.         # 调用父类的函数
  20.         SchoolMember.tell(self)
  21.         print('Salary: "{:d}"'.format(self.salary))

  22. class Student(SchoolMember):
  23.     '''代表一位学生。'''
  24.     def __init__(self, name, age, marks):
  25.         # 开始实现继承
  26.         SchoolMember.__init__(self, name, age)
  27.         self.marks = marks
  28.         print('(Initialized Student: {})'.format(self.name))
  29.     def tell(self):
  30.         # 调用父类的函数
  31.         SchoolMember.tell(self)
  32.         print('Marks: "{:d}"'.format(self.marks))


  33. t = Teacher('Mrs. Shrividya', 40, 30000)
  34. s = Student('Swaroop', 25, 75)
  35. # 打印一行空白行
  36. print()
  37. members = [t, s]
  38. for member in members:
  39.     # 对全体师生工作
  40.     member.tell()
复制代码






上一篇:【Python学习】Python3.6版本中安装scrapy框架
下一篇:【Python学习】对异常的处理机制
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案; 如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

微信扫一扫

快速回复 返回顶部 返回列表