面向对象思想与内置方法

# -->

'''

Monthly Summary
04.23.2019

面向对象
(界门纲目科属种)

# --(  )------------------------------------------------------------------------------------------------

1.类与对象

    对象是特征与技能的结合体,即数据与方法
    类是一系列对象(相似)的特征与技能的结合体,即(相似)的数据与方法

2.面向对象的三大特征

    封装:
        把一堆数据属性与方法属性整合到对象里面
        隐藏: __ 隐藏掉属性

    继承:
        父类是一系列共有数据属性与方法属性的结合体
        子类可以继承父类的属性,还可以派生出自己独有的属性

        组合:
        继承的一种应用,继承父类的属性,不与父类耦合到一起
        把一个对象放到另一个对象里面

    多态:
        1.抽象类
        2.鸭子类型

3.绑定方法
    给对象用的,由对象来调用,会自动把对象本身当作第一个参数传给self

4.类内置装饰器

    @classmethod 绑定给类的方法,对象也可以调用
    @staticmethod 非绑定方法,谁都不绑定,都可以调用
    @property (.getter 外界可查)(.setter 外界可改)(.deleter 外界可删)

5.面向对象高级 attr ibute(属性)
    1.属性
        通过 str字符串 来操作类与对象的属性

        hasattr
            判断对象或者类的属性是否存在
        getattr
            获取对象或者类的属性
            参数 (对象object,str‘属性名’,默认值default)
        setattr
            设置对象或者类的属性
        delattr
            删除对象或者类的属性


    2.类的内置方法
        __init__():调用自动触发,初始化
        __str__():打印对象的时候用此方法,必须return一个字符串
        __del__():在对象占用空间被清掉时,会自动出发__del__方法的执行
        __setattr__(self,Key,value):修改对象的属性时,会自动触发,初始实例化对象时也会自动触发
        __delattr__(self,Key,value):删除对象时会自动触发
        __call__():调用对象时会自动触发


'''

--( 面向过程 )------------------------------------------------------------------------------------------------

    思想:核心是过程,是解决问题的步骤,前后顺序
    基于该编程思想编写程序,相当于一条流水线,机械思维方式。

--( 面向对象 )------------------------------------------------------------------------------------------------

    思想:核心是对象,是数据与方法的结合体。可理解为容器
    基于该编程思想编写程序,就好比创造世界,上帝式思维方式。




--( 2.面向对象的三大特征 )------------------------------------------------------------------------------------------------
--( 组合案例 )------------------------------------------------------------------------------------------------
类与类之间不想耦合,即可以用组合,继承和组合不可混用

class Course:
    def __init__(self,x):
        self.x = x

class Student:
    def __init__(self,name,sex,age):
        self.name = name
        self.sex = sex
        self.age = age
        self.course = []

course_1 = Course('python')
student = Student('Max',24,'male')
student.course.append(course_1.x)
print(student.course)
['python']


--( 4.类内置装饰器 )------------------------------------------------------------------------------------------------
--( @classmethod )------------------------------------------------------------------------------------------------

class OldboyMembers():
    def __init__(self,sex,age):
        self.sex = sex
        self.age = age
    @classmethod
    def obm_sex(self):
        print('qqqqqqqqqqqqqqqqqqqqqqqq')
    # @property
    def obm_age(self):
        return self.age

p =OldboyMembers('111',24)
print(p.obm_age)
print(OldboyMembers.obm_sex())


--( setattr hasattr getattr delattr )------------------------------------------------------------------------------------------------
--( 增改  查  查了用  删 )------------------------------------------------------------------------------------------------


class People:
    school = 'oldboy'
    def __init__(self,name):
        self.name = name
p = People('tank')

hastter
print(hasattr(p, 'school')) # True
print(hasattr(p, 'schooo')) # False

getattr
print(getattr(p, 'name','默认值')) # tank
print(getattr(p, 'NAME','默认值')) # 默认值

setattr
setattr(p,'age',18)
print(p.age) # 18

delattr
print(hasattr(p, 'name')) # True
print(delattr(p, 'name')) # None
原文地址:https://www.cnblogs.com/max404/p/10758440.html