码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象4-类方法和属性方法

时间:2017-11-23 08:09:50      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:int   init   author   elf   color   try   set   默认   括号   

类方法:类方法只能访问类的公有属性,不能访问对象属性。

 1 class person(object):
 2     country = CHINA
 3     age = 28
 4 
 5     def __init__(self,name ,id):
 6         self.name = name
 7         self.id = id
 8     def test(self):
 9         print(%s age is %d%(self.name, self.age) )
10     @classmethod  #类方法装饰器,被装饰的方法只能使用类内的公有属性
11     def test1(self):
12         print(zsq1 age is %d%(self.age) )
13 
14     @classmethod  #类方法装饰器,被装饰的方法可以直接在调用时传参数
15     def test2(self, name1):
16         print(%s age is %d%(name1, self.age) )
17 
18 p1 = person(zsq, 123456)
19 p1.test()
20 
21 p2 = person(zsq1, 123456)
22 p2.test1()
23 p2.test2(zsq2)

 

属性方法:属性方法可以不加括号进行调用,但是不能传递参数。可以使用setter装饰器使用私有属性使用赋值方法间接传递参数。属性方法不支持直接删除,需要使用delter装饰器来装饰删除方法,删除方法内需要删除setter装饰器装饰方法内用于传递删除的私有属性。

 1 __author__ = zhang
 2 class person(object):
 3     country = CHINA
 4     age = 28
 5 
 6     def __init__(self,name ,id):
 7         self.name = name
 8         self.id = id
 9 
10     @property   #属性方法装饰器,被装饰的方法不用使用()就能调用;但是不能传递参数。
11     def test(self):
12         print(%s age is %d%(self.name, self.age) )
13 #如果属性方法需要传递参数可使用下面方法
14     @property
15     def test2(self):
16         name1 = self.__name1
17         print(%s age is %d%(name1, self.age) )
18     @test2.setter
19     def test2(self, name1):
20         self.__name1 = name1
21     @test2.deleter    #类属性的删除方法,默认类是不能删除的;先调用该方法,然后再删除属性方法
22     def test2(self):
23         del self.__name1
24         print(删除方法)
25 
26 p1 = person(zsq, 123456)
27 p1.test   #属性方法调用,不用加括号也不能传递参数
28 
29 p2 = person(zsq1, 12345)
30 p2.test2 = zsq2  #使用私有属性将参数以赋值形式传递给属性方法
31 p2.test2            #再次调用时参数已经传递到属性方法内
32 del p2.test2       #删除属性方法
33 p2.test2           #删除后在调用属性方法提示类不存在私有属性“_person__name1”

 

面向对象4-类方法和属性方法

标签:int   init   author   elf   color   try   set   默认   括号   

原文地址:http://www.cnblogs.com/flags-blog/p/7881360.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!