Python 对象

Python类对象的创建以及使用

Python中,使用class语句只能创建一个类,不能创建类的对象,创建类的对象需要实例化。

对类的实例化格式如下:

类名(参数...)

在创建类时,如没有创建_init_()构造方法或_init_()构造方法只有一个self参数时,则实例化类对象时可以不传入参数。

创建一个名为book的类,并对其实例化

代码示例

class book:

# 定义了两个类变量

title = "书名1"

author = "作者1"

def __init__(self, title, author):
       # 定义了两个实例变量

   self.title = title

   self.author = author

   print("书名为:", title, "作者:", author)

# 实例方法

def pricing(self, price):

     print("该书价格为", price)

 

test = book("平凡的世界", "路遥")

运行输出如下

上面代码中,构造方法除了self参数还有两个参数,所以实例化时需要传入相应的参数值,self参数时特殊参数,不需要手动传值,Python会给它传值,而且self参数需要作为第一个参数。

 

 

类对象的使用

实例化对象后就可以对对象进行操作了,如操作对象的实例变量(访问、修改变量值等),调用对象的方法。

类对象访问实例变量语法格式

对象名.变量名

类对象调用方法语法格式

对象名.方法名(参数)

在上面的代码基础上再添加如下代码

# 打印出testtitleauthor实例变量
print(test.title, test.author)
# 调用testprincing方法
test.pricing(56)
# 为实例变量赋值
test.title = "人生"
print(test.title, test.author)

运行结果如下

Python支持给类对象动态添加变量,只需要为新变量赋值。

代码如下

test.newVar = ['书名2', "作者2"]
print(test.newVar)

运行结果

 

上面代码为test对象动态增加了一个newVar变量,也就是对test对象的newVar实例变量赋值就是新增变量,也可以动态删除变量。

使用del语句删除变量

print(test.newVar)
del test.newVar
print(test.newVar)

运行会报错,

 

 

同样也可以为对象动态添加方法

def void_1(self):
    print("void_1", self)

# 使用void_1testvoid_2方法赋值,也就是动态绑定方法
test.void_2 = void_1
# 需要手动将调用者绑定到第一个参数
test.void_2(test)

# 使用lambda表达式为对象动态绑定方法
test.ld = lambda self: print("lambda", self)
test.ld(test)

 

注:为对象动态添加方法时,Python不会将调用者自动绑定到第一个参数,需要手动将调用者绑定第一个参数(Python要求 不管是类中的构造方法还是实例方法子至少包含一个参数,虽然没有指定该参数的名称,也就是可以是任意参数名,但为了规范以及更好的阅读性,一般命名为self)

运行结果

使用types模块下的MethodType进行包装,从而时动态添加的方法自动绑定到第一个参数。

代码示例

# 定义函数

def test_1(self, text):
    print("text:", text)
# 导入Method
from types import MethodType
# 使用MethodTypetest_1包装,并绑定第一个参数为test
test.void_3 = MethodType(test_1, test)
test.void_3("context")

运行结果

 

通过MethodType包装test_1函数时,指定第一个参数为test,包装后,为test对象动态增加的void_3方法的第一个参数已绑定,所以通过test调用void_3方法时不需要传入第一个参数。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值