python学习--Day4

面向对象编程:

把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部细节,通过继承(inheritance)实现类的特化(specialization)和泛化(generalization),通过多态(polymorphism)实现基于对象类型的动态分派。
类和对象:
类是对象的蓝图和模板,而对象是类的实例。所以说类是抽象的概念,而对象是具体的东西.在面向对象编程的世界中,一切皆为对象,对象都有属性和行为,每个对象都是独一无二的,而且对象一定属于某个类(型)。当把拥有共同特征的对象的静态特征(属性)和动态特征(行为)都拿出来,就可以定义类。
定义类:
在python中使用class关键字定义类,然后通过函数来定义方法,用来描述对象的动态特征。
class Student(object):
#在python2中,object必须要写,而在python3中,object可以不写。
   def __init__(self):
      #__init__是一个特殊方法,用于在创建对象时进行初始化操作
      #通过__init__为学生对象绑定name和age两个属性
      self.name = name
      self.age = age
   def study(self):
      print(name)
      print(age)
student = Student()
写在类中的函数,通常称之为(对象的)方法,这些方法就是对象可以接收的消息。
 
class Student(object):
"""
第二步初始化,初始化自己.
当你的类有一些公用变量的时候,你就可以初始化
初始化中经常放入公有的变量.
"""
    def __init__(self,name):
"""
在类中,一切的变量和函数都要印记(self)
"""
        self.name = name
        def def1(self,num):
        self.num = num
        print(self.num)
        print(self.name)
    def def2(self):
        print(self.num)
        print(self.name)

 
if __name__ == "__main__":
# 实例,类名带括号“Student()”,直接运行初始化函数
   student = Student('lht')
   student.def1(100)
   student.def2()
      
import numpy as aa
class youxi(object):
   print('欢迎来到王者农药!!!')
   ms = input('请输入模式:')
   if ms == '人机对战':
      ss = ['典韦','赵云','鲁班']
      rw = input('请选择人物:')
      if rw in ss:
         if rw == '典韦':
             print('典韦,战力100,技能:.. .. ..,防御100.')
         if rw == '赵云':
             print('赵云,战力150,技能:.. .. ..,防御150.')
         if rw == '鲁班':
             print('鲁班,战力50,技能:.. .. ..,防御50')
    dn = aa.random.choice(['典韦','赵云','鲁班'])
    print('电脑选择人物为:',dn)
    qd = input('是否进入游戏:')
    if qd == '是':
       print('正在进入游戏,请稍等!!!')
    else:
       print('已退出,请重新选择!!!')

youxi()
#这是简单的一个游戏界面,只不过没有用函数来定义方法实现,只用了if语句
 
创建和使用对象:
def main():
  # 创建学生对象并指定姓名和年龄
  stu1 = Student('骆昊', 38)
  # 给对象发study消息
  stu1.study('Python程序设计')
  # 给对象发watch_av消息
  stu1.watch_av()
  stu2 = Student('王大锤', 15)
  stu2.study('思想品德')
  stu2.watch_av()


if __name__ == '__main__':
  main()
我们给Student对象绑定的name和age属性到底具有怎样的访问权限(也称为可见性)。因为在很多面向对象编程语言中,我们通常会将对象的属性设置为私有的(private)或受保护的(protected),简单的说就是不允许外界访问,而对象的方法通常都是公开的(public),因为公开的方法就是对象能够接受的消息。在Python中,属性和方法的访问权限只有两种,也就是公开的和私有的,如果希望属性是私有的,在给属性命名时可以用两个下划线作为开头。
 
class Test:
  def __init__(self, foo):
    self.__foo = foo
  def __bar(self):
    print(self.__foo)
    print('__bar')
  def main():
    test = Test('hello')
    test.__bar()
    print(test.__foo)


if __name__ == "__main__":
main()
 
Python并没有从语法上严格保证私有属性或方法的私密性,它只是给私有的属性和方法换了一个名字来“妨碍”对它们的访问,事实上如果你知道更换名字的规则仍然可以访问到它们。 在实际开发中,我们并不建议将属性设置为私有的,因为这会导致子类无法访问
 
面向对象的支柱:
面向对象有三大支柱:封装、继承、多态。
封装的理解:
隐藏一切可以隐藏的实现细节,只向外界暴露(提供)简单的编程接口”。我们在类中定义的方法其实就是把数据和对数据的操作封装起来了,在我们创建了对象之后,只需要给对象发送一个消息(调用方法)就可以执行方法中的代码,也就是说我们只需要知道方法的名字和传入的参数(方法的外部视图),而不需要知道方法内部的实现细节(方法的内部视图)。
 
 
 
 
 
 
 
 
 

转载于:https://www.cnblogs.com/4443056bdH/p/11305213.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值