zoukankan      html  css  js  c++  java
  • 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并没有从语法上严格保证私有属性或方法的私密性,它只是给私有的属性和方法换了一个名字来“妨碍”对它们的访问,事实上如果你知道更换名字的规则仍然可以访问到它们。在实际开发中,我们并不建议将属性设置为私有的,因为这会导致子类无法访问
     
    面向对象的支柱:
    面向对象有三大支柱:封装、继承、多态。
    封装的理解:
    隐藏一切可以隐藏的实现细节,只向外界暴露(提供)简单的编程接口”。我们在类中定义的方法其实就是把数据和对数据的操作封装起来了,在我们创建了对象之后,只需要给对象发送一个消息(调用方法)就可以执行方法中的代码,也就是说我们只需要知道方法的名字和传入的参数(方法的外部视图),而不需要知道方法内部的实现细节(方法的内部视图)。
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    第7.12节 可共享的Python类变量
    (独孤九剑)--MySQL入门
    (独孤九剑)--错误处理
    PHP图像函数
    (独孤九剑)--图像处理
    (独孤九剑)--文件上传
    (独孤九剑)--文件系统
    (独孤九剑)--正则表达式
    (独孤九剑)--数组与数据结构
    PHP填坑
  • 原文地址:https://www.cnblogs.com/4443056bdH/p/11305213.html
Copyright © 2011-2022 走看看