本文摘自php中文网,作者巴扎黑,侵删。
一、概述
1.定义类(class Dog(object))--> 实例化(d = Dog())---> 实例对象(d)
2. __init__() 构造函数
3. self.name = name 类的属性、成员变量
4. def say_hi() 类的方法 、动态属性
二、访问类的属性
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | class Role( object ):
def __init__( self , name, role, weapon, life_value = 100 , money = 15000 ):
self .name = name
self .role = role
self .weapon = weapon
self .life_value = life_value
self .money = money
def shot( self ):
print ( "%s is shooting..." % self .name)
def got_shot( self ):
print ( "ah...,%s got shot..." % self .name)
def buy_gun( self , gun_name):
print ( "%s just bought %s" % ( self .name,gun_name))
r1 = Role( 'Alex' , 'police' , 'AK47' )
r2 = Role( 'Jack' , 'terrorist' , 'B22' )
|
2.1 访问类的属性和方法
我们用 实例对象.属性/方法 来访问
1 2 3 4 5 6 7 8 9 | r1.shot()
r2.buy_gun( 'B13' )
print (r1.role)
Alex is shooting...
Jack just bought B13
police
|
2.1 修改对象的属性
在上例中我们为r2这个角色更换了武器,即 B22 --> B13。但实际上我们调用r2这个角色的武器属性是,会发现他的武器没有改变:
1 2 3 4 5 6 | r2.buy_gun( 'B13' )
print (r2.weapon)
Jack just bought B13
B22
|
其实我们可以在购买武器是直接改变对象的属性:
1 2 3 4 5 6 7 8 9 10 11 12 | def buy_gun( self , gun_name):
print ( "%s just bought %s" % ( self .name, gun_name))
self .weapon = gun_name
r2.buy_gun( 'B13' )
print (r2.weapon)
Jack just bought B13
B13
|
三、私有属性
3.1、定义私有属性
类的属性一旦被定义成私有属性,就不能被外部调用和随意修改。私有属性只能在类是内部使用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | class Person( object ):
def __init__( self , name, job, phone, address):
self .name = name
self .job = job
self .phone = phone
self .__address = address
def sayhi( self ):
print ( "hell,%s" % self .name)
p1 = Person( 'Bigberg' , 'Doctor' , '8833421' , 'hz' )
print (p1.name)
print (p1.__address)
Bigberg
File "G:/python/untitled/study6/类的私有属性.py" , line 17 , in <module>
print (p1.__address)
AttributeError: 'Person' object has no attribute '__address'
|
运行的结果是访问属性name是可以通过的,但是直接访问私有属性 self.__address 报错了。但是如果通过其他的方法,还是可以访问的到的。
3.2、get的方法访问私有属性
外部不能直接访问私有属性,但是在类的内部可以访问,所以我们可以定义一个方法来获取私有属性。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | class Person( object ):
def __init__( self , name, job, phone, address):
self .name = name
self .job = job
self .phone = phone
self .__address = address
def get_private( self ):
return self .__address
def sayhi( self ):
print ( "hell,%s" % self .name)
p1 = Person( 'Bigberg' , 'Doctor' , '8833421' , 'hz' )
res = p1.get_private()
print (res)
hz
|
3.3 强制访问私有属性
我们还可以通过一种方法来强制访问私有属性,甚至修改私有属性的值。方法:对象名._类名__属性名。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | class Person( object ):
def __init__( self , name, job, phone, address):
self .name = name
self .job = job
self .phone = phone
self .__address = address
def get_private( self ):
return self .__address
def sayhi( self ):
print ( "hell,%s" % self .name)
p1 = Person( 'Bigberg' , 'Doctor' , '8833421' , 'hz' )
print (p1._Person__address)
print ( "----change----" )
p1._Person__address = 'BJ'
print (p1._Person__address)
hz
- - - - change - - - -
BJ
|
类是简化和优化应用程序的重要工具。
1.继承性:子类沿用父类特征的能力。体现并扩充了面向对象程序设计方法的共享性,使得同类型对象共享数据与程序代码,提高了程序的复用性。父类是可以进一步定义派生新类的类,子类是以其他类为起点,通过更具体的特征定义所建立的新类。
2.多态性:一些关联的类包含同名的方法程序,但方法程序的内容可以不同。调用哪种在运行时根据对象的类确定,同样的 消息被不同的对象接收时可导致不同的行动。
3.抽象性:提取一个类或对象与众不同的特征,而不对该类或对象其他信息进行处理。
四、总结
1、定义私有属性:self.__private_attr_name = private_attr_name
2、强制访问私有属性:对象名._类名__属性名(d._dog__sex)
3、对外提供只读接口访问:
def get_sex(self):
return self.__sex
以上就是类的简介和属性介绍的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
用Python读写excel文档
Python自学用什么书
Python中关于with的用法
Python怎么调用api接口
supervisor的简单介绍
Python 的 help 函数使用
了解Python 中日志异步发送到远程服务器
Python下的selenium安装的过程分享
Python如何实现可视化热力图
Python如何安装matplotlib
更多相关阅读请进入《Python》频道 >>
人民邮电出版社
python入门书籍,非常畅销,超高好评,python官方公认好书。
转载请注明出处:木庄网络博客 » 类的简介和属性介绍