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)  # 只能间接访问,但是不推荐这种方法方式
原文地址:https://www.cnblogs.com/GetcharZp/p/11460517.html