Python面向对象静态方法,类方法,属性方法

静态方法(staticmethod名义上归类管理,实际上在静态方法里访问不到类或实例中的静态属性)

 1 class days(object):
 2     def __init__(self, food):
 3         self.food = food
 4
 5     @staticmethod  # 实际和类没有关系
 6     def tell(self):
 7         print(‘这里有%s,%s快来‘ % (self.food, ‘name‘))
 8
 9
10 a = days(‘香蕉‘)
11 a.tell(a)

类方法(classmethod只能访问类变量,不能访问实例变量)

 1 lass f2(object):
 2     name = ‘大哥大大‘  # 类变量
 3
 4     def __init__(self, name):
 5         self.name = name
 6
 7     @classmethod
 8     def eat(self):
 9         print(‘这里有%s,【%s】‘ % (self.name, ‘类的方法‘))
10
11
12 f2.eat()

属性方法(把一个方法变成一个静态属性)

由属性的定义和调用要注意一下几点:
1 定义时,在普通方法的基础上添加 @property 装饰器;
2 定义时,属性仅有一个self参数
3 调用时,无需括号

属性的定义有两种方式:
1 装饰器 即:在方法上应用装饰器
2 静态字段 即:在类中定义值为property对象的静态字段

经典类,具有一种@property装饰器:

 1 class f3(object):
 2     def __init__(self, name):
 3         self.name = name
 4         self.__food = None
 5
 6     @property
 7     def eat2(self):
 8         print(‘这里%s,【%s】‘ % (self.name, ‘在干什么‘))
 9
10
11 c = f3(‘阿猪‘)
12 c.eat2

新式类,具有三种@property装饰器,分别对应了三个被@property、@方法名.setter、@方法名.deleter修饰的方法。

 1 class f4(object):
 2     def __init__(self, name):
 3         self.name = name
 4         self.__food = None
 5
 6     @property  # 把一个普通方法变为属性方法,获取
 7     def eat(self):
 8         print(‘这里%s,【%s】‘ % (self.name, self.__food))  # 由于没有参数self.__food在这没有调用
 9
10     @eat.setter  # 修改
11     def eat(self, food):
12         print(‘我要吃%s‘ % food)
13         self.__food = food
14
15     @eat.getter  # 删除
16     def eat(self):
17         del self.__food
18         print(‘删除字段self.__food‘)
19
20
21 d = f4(‘阿豪‘)
22 d.eat
23 d.eat = ‘饺子‘
24 del d.eat
25 d.eat
时间: 2024-11-01 22:25:19

Python面向对象静态方法,类方法,属性方法的相关文章

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

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

python面向对象中的,变量,方法与属性

1. 类的成员 class Foo: # 方法 def __init__(self,name): # 实例变量/字段 self.name = name # 方法 def func(self): pass # obj,Foo类的对象 # obj,Foo类的实例 obj = Foo('朱奎峰') 成员共分为三类: 变量: - 实例变量(字段) - 公有实例变量(字段) - 私有实例变量(字段) - 类变量(静态字段) - 公有类变量(静态字段) - 私有类变量(静态字段) 实例一: class Fo

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

#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

Python 面向对象和实例属性

一.三大编程范式 编程范式即编程的方法论,标识一种编程风格. 我们学习完Python语法后,就可以写python代码了,然后每个人写代码的风格不同,这些不同的风格就代表了不同的流派. 如果把python的基本语法比作无数的基本功,那么不同的编程风格就好比不同的武林门派. 虽然大家风格不同,但是都可以完成你的编程需求,Python是一门面向对象编程语言,但是到目前为止,你从未接触面向对象编程,然而你已经可以解决很多问题了,在Python中并没有人强制你使用哪一种固定的风格. 根本就没有什么门派是天

Python面向对象反射,双下方法

一. 反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩. python面向对象中的反射:通过字符串的形式操作对象相关的属性.python中的一切事物都是对象(都可以使用反射) 四个可以实现自省的函数 下列方法适用于类和对象(一切皆对象,类本身也是一个对象) 对实例化对象的示例 class Foo

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面向对象之静态属性/静态方法/类方法/组合

#!/usr/bin/env python # coding:utf-8 class Campus: def __init__(self,name,addr,type): self.Name = name self.Addr = addr self.Type = type def details(self): print("学样的详细信息, 名称:%s 地址:%s 类型:%s" %(self.Name,self.Addr,self.Type) ) c1 = Campus("南

python面向对象中的__init__方法怎么理解?

我们在学习python类的时候,总会碰见书上的类中有__init__()这样一个函数,很多同学百思不得其解,其实它就是python的构造方法. 构造方法类似于类似init()这种初始化方法,来初始化新创建对象的状态,在一个对象呗创建以后会立即调用,比如像实例化一个类: f = FooBar() f.init() 使用构造方法就能让它简化成如下形式: f = FooBar() 你可能还没理解到底什么是构造方法,什么是初始化,下面我们再来举个例子: class FooBar: def __init_