目录

创建类

动态绑定属性

动态绑定方法


创建类

首先我们创建一个类和它的对象

class Student:
def __init__(self, name, age):
self.name = name
self.age = age def eat(self):
print(self.name + '在打蜗牛') sws_1 = Student('慢蜗牛', 20)
sws_2 = Student('SSN', 30)

然后我们来看看 他们在内存中的关系

从关系中我们不难看出一个Student类可以创建N个Student类的实例对象

每个实例对象的属性值可以相同,也可以不同

而当我们需要给一个实例对象添加属性,比如添加一个性别的时候,我们就可以用动态绑定了

动态绑定属性

直接用点号'.'来绑定

sws_2.gender = '女'
print(sws_2.name, sws_2.age, sws_2.gender)

直接点号后面接我们想要添加的属性,然后给这个属性赋值就行

SSN 30 女

但是如果我们让没有进行动态绑定的sws_1来打印gender就会报错了

sws_2.gender = '女'
print(sws_2.name, sws_2.age, sws_2.gender)
print(sws_1.gender)

结果如:

Traceback (most recent call last):
File "D:\pythonProject\main.py", line 15, in <module>
print(sws_1.gender)
AttributeError: 'Student' object has no attribute 'gender'

原理如图所示,在创建完对象之后,我们只在sws_2中进行了动态绑定性别

而没有在sws_1中绑定,所以运行会报错

动态绑定方法

如前面动态绑定属性一样,我们动态绑定方法也用点号'.',不过得先提前定义函数

注意!!!类之外def的成为函数,类里面的叫方法

def slowsnail():
print('定义在类之外的函数') sws_1.slowsnail = slowsnail
sws_1.slowsnail() sws_2.slowsnail()

同样的,我们给sws_1动态绑定,然后也给sws_2运行一下这个方法

定义在类之外的函数
Traceback (most recent call last):
File "D:\pythonProject\main.py", line 24, in <module>
sws_2.slowsnail()
AttributeError: 'Student' object has no attribute 'slowsnail'

如前面绑定属性一样,没有动态绑定的sws_2也被编译器报错了

python的动态绑定属性和方法的更多相关文章

  1. python动态绑定属性和方法

    基于Python 2.7.13测试. Python是动态语言,在类定义了之后,还可以动态地绑定属性和方法. 下面先来看怎么给类的实例动态地绑定属性和方法. >>> class Stu ...

  2. Python 给实例或者类动态绑定属性和方法

    首页定义一个class,创建一个实例之后,我们可以给该实例绑定任何属性和方法,先定义class: class Student: def __init__(self, name, score): sel ...

  3. python中类中属性和方法的具体定义方法和使用

    1. Python中类中特性分成属性和方法 属性和方法都分为私有和公有的,私有的只可以在本类中使用外部是无法访问的 2. 定义属性(成员变量)的语法格式(公有属性/私有属性) class 类名: de ...

  4. python动态添加属性和方法

    ---恢复内容开始--- python动态添加属性: class Person(object): def __init__(self,newName,newAge): self.name = newN ...

  5. python干货-类属性和方法,类的方法重写

    类属性与方法 类的私有属性 __private_attrs: 两个下划线开头,表明为私有,外部不可用,内部使用时self.__private_attrs. 类的方法 在类的内部,使用 def 关键字来 ...

  6. python -- 面向对象编程(属性、方法)

    一.属性 对象的属性(attribute)也叫做数据成员(data member). 如果想指向某个对象的属性,可以使用格式: object.attribute 属性又分为:私有属性和公有属性. 私有 ...

  7. python 列表的属性和方法整理

    list属性和方法 补一个超实用的函数 envmerate(列表名, [start=0])  作用:  将一个可遍历的数据对象(如列表.元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用 ...

  8. python常见模块属性与方法

    sys模块的变量 变量 描述 sys.path 模块搜索路径 path[0] 是当前脚本程序的路径名,否则为 '' sys.modules 已加载模块的字典 sys.version 版本信息字符串 s ...

  9. python 动态添加属性及方法及“__slots__的作用”

    1.动态添加属性 class Person(object): def __init__(self, newName, newAge): self.name = newName self.age = n ...

  10. Python查看对象属性的方法

    帮助https://docs.python.org/2/library/functions.html dir() 函数 D:\pythontest>python Python (v3. , :: ...

随机推荐

  1. Room组件的用法

    一.Android官方ORM数据库Room Android采用Sqlite作为数据库存储.但由于Sqlite代码写起来繁琐且容易出错,因此Google推出了Room,其实Room就是在Sqlite上面 ...

  2. SpringBoot 测试实践 - 3:@MockBean、@SpyBean 、提升测试运行速度、Testcontainer

    编写测试的时候,我们必须保证外部依赖行为一致,也需要模拟一些边界条件,所以我们需要使用 Mock 来模拟对象的行为.SpringBoot 提供了 @MockBean 和 @SpyBean 注解,可以方 ...

  3. 小白整理了VUEX

    在小白开发的项目中前端使用的是Vue,虽然在日常工作中可以使用Vue进行开发工作.但是没有系统的学习过Vue,对Vue的一些特性和方法使用时常常需要查询资料解决问题,查询资料常常会占用大量时间,尤其对 ...

  4. 原来你是这样的JAVA[05]--String

    1.从概念上讲,java字符串就是Unicode字符串. 2.字符串拼接 用指定分隔符拼接字符串数组时,使用StringJoiner或者String.join()更方便: 用StringJoiner拼 ...

  5. uwsgi配置

    编辑nginx配置: server { listen 8098; server_name 127.0.0.1; location / { include uwsgi_params; # uwsgi_p ...

  6. 微信小程序2--WXML与WXSS

    编辑WXML文件 我们在开发者工具里打开之前修改的模板小程序home文件夹下的home.wxml,里面有如下代码 <!--pages/home/home.wxml--> <text& ...

  7. 小知识:PPT的幻灯片放映设置

    最近给某客户讲课时,碰到了幻灯片自动翻页的情况,发现是因为之前做过粗略的计时演练,有些片子就快速过了. 问题现象: 结果导致放映时也出现了某些片子快速被自动翻页. 解决方案: 设置成手动推进幻灯片的方 ...

  8. Microsoft Build 2021第二天

    C++20 Ranges are complete in Visual Studio 2019 version 16.10 https://devblogs.microsoft.com/cppblog ...

  9. ConcurrentHashMap底层源码分析

    ConcurrentHashMap源码底层分析 1.ConcurrentHashMap初始化 jdk8之后,ConcurrentHashMap采用了HashMap的底层结构(数据,链表,红黑树),在此 ...

  10. 树莓派3B/3B+的串口使用

    树莓派包含两个串口,一个称之为硬件串口(/dev/ttyAMA0),一个称之为mini串口(/dev/ttyS0).硬件串口由硬件实现,有单独的波特率时钟源,性能高.可靠.mini串口时钟源是由CPU ...