zoukankan      html  css  js  c++  java
  • Python 面向对象

    Python 面向对象

    类创建:
    # class 类名:
    class Demo:
        """ Demo Doc (类的说明文档)"""
        pass
    
    # 类.__doc__ 查看说明文档
    print(Demo.__doc__)
    
    Demo1(基本实例):
    # 类的创建
    class Person:
        """ Person class, Record Base Information """
    
        # 类变量
        country = 'China'
    
        # 称 __init__ 或 __new__ 为构造方法
        def __init__(self, name):
            self.name = name
    
        def speak(self):
            print(self.name, ' Speaking ... ')
            
        # 称 __del__ 为析构方法,在对象被销毁时执行
        def __del__(self):
            print(self.name, ' Destroy ... ')
    
    
    person = Person('GetcharZp')  # 类实例化成对象
    person.speak()  # 调用对象中的 speak 方法
    print(person.name)  # 访问对象中的属性
    print(Person.country)  # 通过类访问类变量
    print(person.country)  # 通过对象访问类变量
    
    # getattr 获取对象属性的值,如果是函数可以在后面加括号让其执行【反射】
    print(getattr(person, 'country'))
    speak = getattr(person, 'speak')
    speak()
    
    print(Person.__dict__)  # 类的属性
    print(Person.__bases__)  # 类的所有父类
    
    Demo2(类的继承)
    # 基类 1
    class Base1:
        __country = 'China'  # __ 双下划线用来定义私有属性或方法
    
        def func_base1(self):
            print('Method Base1')
    
    
    # 基类 2
    class Base2:
        def func_base2(self):
            print('Method Base2')
    
    
    # 子类
    class Sun(Base1, Base2):
        def func_sun(self):
            """ 通过 super 调用父类的方法, 可以解决多继承问题中的MRO """
            super().func_base1()
            super().func_base2()
            print('Method Sun')
    
    
    obj = Sun()  # 类的实例化
    print(obj.func_sun())
    print(obj.__country)  # 私有属性子类无法直接访问
    print(obj._Base1__country)  # 只能间接访问,但是不推荐这种方法方式
    
  • 相关阅读:
    使用selenium模拟登陆12306以及滑块验证
    网络爬虫之requests模块
    网络爬虫简介
    MongoDB基础操作
    redis集群搭建以及常见问题
    redis的主从复制
    Linux下如何安装mysql
    python 序列化模块
    python os模块和sys模块
    python 时间模块
  • 原文地址:https://www.cnblogs.com/GetcharZp/p/11460517.html
Copyright © 2011-2022 走看看