面向对象进阶

简介: 面向对象进阶

面向对象进阶

1.动态为成员绑定属性

class Person(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age
if __name__ == '__main__':
    p = Person('zss', 18)
    p.address = '西安'
    print(p.address)
西安

2.动态绑定类属性

lass Person(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age

if __name__ == '__main__':
    Person.obj = '测试动态绑定'
    p2=Person('lss',19)
    print(p2.obj)
测试动态绑定

3.动态绑定成员方法
需要使用types模块

import types
class Person(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age

if __name__ == '__main__':
    p=Person('lss',22)
    def run(self):
        print("测试run方法")
    p.run=types.MethodType(run,p)
    p.run()
测试run方法

4.动态删除
del 对象.属性名
delattr(对象, "属性名")

5.绑定限制
为了达到限制的目的,Python允许在定义class的时候,定义一个特殊的 slots 变量,来限制该class能添加的属性

动态语言:可以在运行的过程中,修改代码
静态语言:编译时已经确定好代码,运行过程中不能修改

class Person(object):
    __slots__ = ('name','age')
    def __init__(self, name, age):
        self.name = name
        self.age = age

if __name__ == '__main__':
    p=Person('lss',22)
    p.sex='男'
AttributeError: 'Person' object has no attribute 'sex'
相关文章
|
1月前
|
算法 Java 程序员
【C++专栏】C++入门 | 类和对象 | 面向过程与面向对象的初步认识
【C++专栏】C++入门 | 类和对象 | 面向过程与面向对象的初步认识
23 0
|
3月前
|
人工智能 运维 Java
面向对象进阶
面向对象进阶
39 0
|
9月前
|
设计模式 算法 搜索推荐
C++的编程思想和进阶编程
● 一个模式描述了一个不断发生的问题以及这个问题的解决方案;模式是前人的设计经验上总结出来的对于一些普遍存在的问题提供的通用的解决方案;比如单例模式、观察者模式等 ● 软件中有很多模式 面向对象常见的23中设计模式; 反模式;企业应用架构模式等
35 0
|
11月前
|
存储 开发框架 Java
|
12月前
|
程序员 测试技术 C语言
c++面向对象程序设计入门
c++面向对象程序设计入门
139 0
|
存储 PHP 开发者
面向对象基础总结|学习笔记
快速学习面向对象基础总结
108 0
|
数据安全/隐私保护 C++
C++面向对象程序设计简介
C++面向对象程序设计简介
171 1
|
存储
笔记08-面向对象
笔记08-面向对象
笔记08-面向对象
|
存储 安全 Java
面向对象基础进阶02
面向对象基础进阶02
78 0
面向对象基础进阶02
|
存储 程序员 数据库
面向对象基础进阶03
面向对象基础进阶03
81 0
面向对象基础进阶03