面向对象进阶

简介: 面向对象进阶

面向对象进阶

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'
相关文章
|
XML JSON 前端开发
什么是ajax,ajax有什么特点?
什么是ajax,ajax有什么特点?
164 0
leetcode47全排列2刷题打卡
leetcode47全排列2刷题打卡
98 0
|
机器学习/深度学习 人工智能 分布式计算
蚁群、蜂群的智慧,大模型也可以有,谷歌等机构群体智能研究亮相
蚁群和蜂群以其独特的群体智能行为著称,如分布式决策、自组织性和鲁棒性。这些特性启发了科学家将群体智能原理应用于大模型的构建,以实现更高效、更智能的系统。谷歌等机构已通过模拟这些行为,开发出如“蚁群优化”算法等成果,显著提高了计算效率和系统的鲁棒性。然而,群体智能的应用仍面临通信协调、个体差异性和可解释性等挑战。
439 3
|
JavaScript API 图形学
ThreeJS入门-创建一个正方体
这篇文章介绍了如何使用Three.js创建一个基本的正方体模型,并提供了实现这一功能的详细步骤和代码示例。
342 1
ThreeJS入门-创建一个正方体
|
Linux Android开发 iOS开发
使用Kivy创建“Hello World”应用并打包成APK
使用Kivy创建“Hello World”应用并打包成APK
|
图形学
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版10(附带项目源码)
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版10(附带项目源码)
330 0
|
数据采集 Web App开发 开发工具
|
供应链 搜索推荐
百货零食连锁店Giant Eagle的CIO成功进行数字化转型的秘诀
百货零食连锁店Giant Eagle的CIO成功进行数字化转型的秘诀
|
XML 运维 Java
Log4j2使用总结
Log4j2使用总结
255 0
|
存储 安全 云计算
激动人心!我们收到了杭州亚组委的感谢信
激动人心!我们收到了杭州亚组委的感谢信
175 1