1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 静态方法 类方法 属性方法

静态方法 类方法 属性方法

时间:2021-09-16 00:57:40

相关推荐

静态方法 类方法 属性方法

静态方法:通过加@staticmethod实现,只是名义上归类管理,实际上在静态方法里访问不了类或实例中的任何属性。

class Person(object):@staticmethoddef person_speak(obj):print('I like Hiphop!')me = Person()me.person_speak(me)Person.person_speak(me)# I like Hiphop! # I like Hiphop!

类方法:通过加@classmethod实现,只能访问类变量,不能访问实例变量。

class Person(object):sex = 'man'def __init__(self, sex):self.sex = sex# @classmethoddef hello(self):print('I am {}'.format(self.sex))me = Person('woman')me.hello()# I am woman# 去掉装饰器的注释后,输出# I am man

属性方法:通过加@property实现,把一个方法变成静态属性

class Person(object):n = 1@propertydef hello(self):print(self.n)me = Person()me.hello

# 输出

# 1

一般的属性都可以赋值,但是属性方法的赋值特殊处理

class Person(object):def __init__(self):self.__n = 1@propertydef hello(self):return self.__n@hello.setterdef hello(self, n):self.__n = nme = Person()print(me.hello) # 1me.hello = 666print(me.hello) # 666

同理,也可以删除

class Person(object):def __init__(self):self.__n = 1@propertydef hello(self):return self.__n@hello.setterdef hello(self, n):self.__n = n@hello.deleterdef hello(self):del self.__nme = Person()me.hello = 666del me.hellome.helloTraceback (most recent call last):File "oop.py", line 19, in <module>me.helloFile "oop.py", line 8, in helloreturn self.__nAttributeError: 'Person' object has no attribute '_Person__n'

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。