• 面向对象


    封装,构造,继承

    1、如何创建类

        class 类名:
          pass

    2、创建方法
        构造方法,__init__(self,arg)
            obj = 类('a1')
        普通方法
            obj = 类(‘xxx’)
            obj.普通方法名()

    3、面向对象三大特性之一:封装

    class Bar:
    def __init__(self, n,a):
    self.name = n
    self.age = a
    self.xue = 'o'
    
    b1 = Bar('alex', 123)
    b2 = Bar('eric', 456)




    4、适用场景:

    如果多个函数中有一些相同参数时,转换成面向对象
    
    class DataBaseHelper:
    
    def __init__(self, ip, port, username, pwd):
    self.ip = ip
    self.port = port
    self.username = username
    self.pwd = pwd
    
    def add(self,content):
    # 利用self中封装的用户名、密码等 链接数据
    print('content')
    # 关闭数据链接
    
    def delete(self,content):
    # 利用self中封装的用户名、密码等 链接数据
    print('content')
    # 关闭数据链接
    
    def update(self,content):
    # 利用self中封装的用户名、密码等 链接数据
    print('content')
    # 关闭数据链接
    
    def get(self,content):
    # 利用self中封装的用户名、密码等 链接数据
    print('content')
    # 关闭数据链接
    
    s1 = DataBaseHelper('1.1.1.1',3306, 'alex', 'sb')

    5、面向对象三大特性之二:继承

      1、继承

      class 父类:
        pass

      class 子类(父类):
        pass
      
      2、重写
        防止执行父类中的方法

      3、self永远是执行改方法的调用者

      4、
        super(子类, self).父类中的方法(...)
        父类名.父类中的方法(self,...)

      5、Python中支持多继承

        a. 左侧优先
        b. 一条道走到黑
        c. 同一个根时,根最后执行

      6、面向对象三大特性之三:多态
        ====> 原生多态

       

     # Java
        string v = 'alex'
    
        def func(string arg):
    print(arg)
    
    func('alex')
    func(123)
    
    # Python 
    v = 'alex'
    
    def func(arg):
    print(arg)
    
    
    func(1)
    func('alex')

    ==================================================================

    练习:
    
    class Person:
    
    def __init__(self,n,a,g,f):
    
    self.name = n
    self.age =a 
    self.gender =g
    self.fight = f
    
    
    role_list = []
    
    y_n = input('是否创建角色?')
    if y_n == 'y':
    name = input('请输入名称:')
    age = input('请输入名称:')
    ...
    role_list.append(Person(....))
    
    # role_list,1,2 
    ======================================================= 面向对象中高级 ========================================================
    
    
    class Foo:
    
    def __init__(self, name):
    # 普通字段
    self.name = name
    
    # 普通方法
    def show(self):
    print(self.name)
    
    obj = Foo('alex')
    obj.name
    obj.show()
    
    
    类成员:
    # 字段
    - 普通字段,保存在对象中,执行只能通过对象访问
    - 静态字段,保存在类中, 执行 可以通过对象访问 也可以通过类访问
    
    # 方法
    - 普通方法,保存在类中,由对象来调用,self=》对象
    - 静态方法,保存在类中,由类直接调用
    - 类方法,保存在类中,由类直接调用,cls=》当前类
    
    ######## 应用场景:
    如果对象中需要保存一些值,执行某功能时,需要使用对象中的值 -> 普通方法
    不需要任何对象中的值,静态方法
    
    
    # 属性,特性
    - 不伦不类
    
    中国的所有省份,用面向对象知识表示?
    
    class Province:
    # 静态字段,属于类
    country = '中国'
    
    def __init__(self, name):
    # 普通字段,属于对象
    self.name = name
    
    henan = Province('河南')
    henan.name
    henan.name = "河南南"
    
    
    #hebei = Province('河北')
    
    # Province.country
  • 相关阅读:
    java.io.IOException: HTTPS hostname wrong: should be 规格严格
    linux syslog 规格严格
    SVN,HG,GIT 命令说明 规格严格
    pclose : no child process 规格严格
    使用NetBeans6开发OSGi应用(1)——FirstOSGi[88250原创]
    Netbeans大战Eclipse 谁将走向祭坛?
    XP中的重要惯例和规则
    使用NetBeans6开发OSGi应用(1)——FirstOSGi[88250原创]
    简简单单删除所有.svn目录
    简简单单删除所有.svn目录
  • 原文地址:https://www.cnblogs.com/xied/p/12455246.html
Copyright © 2020-2023  润新知