Python静态方法、类方法、属性方法

静态方法

使用静态方法以后,相当于把下面的函数和类的关系截断了,它的作用相当于是类下面的一个独立函数,不会自动传入参数self。

class people:.....  @staticmethod  def xxx():    pass

  

类方法

只能访问类变量,不能访问实例变量。

@classmethod

  

class dog:
	name = "小黑"
	def __init__(self,name):
		self.name = name

	@classmethod
	def hit(cls):
		print("%s" % (cls.name))

d1 = dog("小花")
d1.hit()

#输出
小黑

  

属性方法

把一个方法变成一个静态属性,调用的时候不需要加括号(d1.hit)。

class dog:
	def __init__(self,name):
		self.name = name

	@property
	def hit(self):
		print("%s" % (self.name))

d1 = dog("小花")
d1.hit

#输出
小花

  

那么如何给属性方法传入参数呢?

可以看下面的代码,需要加上@hit.setter装饰(必须写在@property下面),且两个函数名保持一致。

class dog:
	def __init__(self,name):
		self.name = name
		self.__age = None

	@property
	def hit(self):
		print("%s%s" % (self.name,self.__age))

	@hit.setter
	def hit(self,age):
		print("Set hit input:",age)
		self.__age = age

d1 = dog("小花")
d1.hit
d1.hit = 11
d1.hit

#输出
小花None
Set hit input: 11
小花11

  

  

既然能传参,那么属性方法也是支持删除的。

@hit.deleter
	def hit(self):
		del self.__age

  

原文地址:https://www.cnblogs.com/endust/p/12325453.html

时间: 2024-08-02 08:42:29

Python静态方法、类方法、属性方法的相关文章

python静态方法类方法属性方法

Python的静态方法和类成员方法都可以被类或实例访问,两者概念不容易理清,但还是有区别的: 1)静态方法无需传入self参数,类成员方法需传入代表本类的cls参数: 2)从第1条,静态方法是无法访问实例变量的,而类成员方法也同样无法访问实例变量,但可以访问类变量: 3)静态方法有点像函数工具库的作用,而类成员方法则更接近类似Java面向对象概念中的静态方法. 静态方法 @staticmethod    def staticmd():        print '静态方法 @classmetho

Python 静态方法 类方法

静态方法和实例方法的区别主要体现在两个方面: 1. 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式.而实例方法只有后面这种方式.也就是说,调用静态方法可以无需创建对象. 2. 静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法:实例方法则无此限制. 3. 类方法可以被对象调用,也可以被实例调用:传入的都是类对象,主要用于工厂方法,具体的实现就交给子类处理 4. 静态

Python之路 - 属性方法,类方法,静态方法

本章内容 属性方法 类方法 静态方法 属性方法 属性方法就是通过使用装饰器 @property , 将一个方法变成一个静态属性 , 于是我们就可以通过访问属性 , 来或得一个方法的返回值 1 from urllib.request import urlopen 2 class Web_page: 3 def __init__(self, url): 4 self.url = url 5 self.__content = None 6 # 将content方法变成属性 7 @property 8

类的各种自带方法,静态方法,属性方法,类方法等

#coding=utf-8 class Dog(object): ''' 类的描述 ''' def __init__(self,name): self.name = name self.__food = None @staticmethod #实际上跟类没什么关系,单纯的函数,但是必须通过类名来调用 def eat(food): print ('%s is eating %s'%('xiaohuang',food)) @classmethod #类方法,只能访问类变量,不能访问实例变量 def

day7 静太方法 类方法 属性方法 反射 导常

类方法 1 '''是类对象所拥有的方法,需要用修饰器@classmethod来标识其为类方法,对于类方法 2 ,第一个参数必须是类对象,一般以cls作为第一个参数(当然可以用其他名称的变量作为其第一个参数, 3 但是大部分人都习惯以'cls'作为第一个参数的名字,就最好用'cls'了),能够通过实例对象和类对象去访问.''' 4 5 lass People(object): 6 country = 'china' 7 8 #类方法,用classmethod来进行修饰 9 @classmethod

静态方法@staticmethod 属性方法@property

多态 接口重用, 一种接口,多种实现 静态方法@staticmethod 只是名义上归类管理, 实际上在静态方法里访问不了类或实例中的任何属性类方法@classmethod 只能访问类变量,不能访问实例变量 属性方法@property 把一个方法变成一个静态属性给参数赋值要重新定义一个同名函数,并且前面加@属性名.setter import os# os.system()# os.mkdir() class Dog(object): def __init__(self,name): self.n

python静态方法-类方法

关于类的静态方法:@staticmethod 和 @classmethod 1.使用这两种方法,不用实例化类,直接可以用,如:Stu.say() 2.两种方法的区别: 1.@staticmethod 不需要加参数: 调用类变量用:类名.类变量名: 调用类函数用:类名.函数() 2.@classmethod 需要加参数cls: 调用类变量用:cls.类变量名: 调用类函数用:cls().函数() class Stu(object): country = 'china' # 类变量 def __in

python学习笔记之面向对象中的静态方法、类方法、属性方法总结

静态方法 类方法 属性方法 一.静态方法 可以利用@staticmethod装饰器把一个方法变成一个静态方法.静态方法不可以方法实例变量或者类变量,也就是说不可以使用self.属性这样子调用实例属性了.其实静态方法就和类本身没什么关系了,它和类 唯一的关联就是需要通过类名来调用这个方法. 错误调用方式: class Dog(object): def __init__(self,name): self.name = name @staticmethod #把eat方法变为静态方法 def eat(

面向对象【day08】:静态方法、类方法、属性方法

本节内容 概述 静态方法 类方法 属性方法 总结 一.概述 前面我们已经讲解了关于类的很多东西,今天讲讲类的另外的特性:静态方法(staticmethod).类方法(classmethod).属性方法(property) 二.静态方法 2.1 定义 说明:在方法名前加上@staticmethod装饰器,表示此方法为静态方法 1 2 3 4 5 6 7 8 class Dog(object):     def __init__(self,name):         self.name = nam

Python的程序结构(2) -> 方法/Method -> 静态方法、类方法和属性方法

静态方法.类方法和属性方法 在 Python 中有三种常用的方法装饰器(参考装饰器部分内容),可以使普通的类实例方法变成带有特殊功能的方法,分别是静态方法.类方法和属性方法. 静态方法 / Static Method 在 def 定义之前加上 @staticmethod 进行装饰,便可以使该方法成为静态方法,静态方法无法调用实例属性.静态方法可以通过实例或类进行调用.通常用于无需生成实例或无需共享实例属性的方法中,比如一些纯粹的数学公式计算等场合. 1 class Foo(): 2 @stati