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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象4-类方法和属性方法相关的知识,希望对你有一定的参考价值。

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

 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-类方法和属性方法的主要内容,如果未能解决你的问题,请参考以下文章

面向对象理解,封装继承多态知识总结

Python之路-面向对象&继承和多态&类属性和实例属性&类方法和静态方法

python 面向对象专题:私有成员类方法静态方法属性isinstance/issubclass

python 面向对象专题:私有成员类方法静态方法属性isinstance/issubclass

Python面向对象基础

Python面向对象:继承多态类属性和类方法单例