python中类的属性和方法介绍

Python-类属性,实例属性,类方法,静态方法,实例方法

类属性和实例属性

#coding:utf-8
class Student(object):
  name = 'I am a class variable' #类变量
>>> s = Student() # 创建实例s
>>> print(s.name) # 打印name属性,因为实例并没有name属性,所以会继续查找class的name属性
Student
>>> print(Student.name) # 打印类的name属性
Student
>>> s.name = 'Michael' # 给实例绑定name属性
>>> print(s.name) # 由于实例属性优先级比类属性高,因此,它会屏蔽掉类的name属性
Michael
>>> print(Student.name) # 但是类属性并未消失,用Student.name仍然可以访问
Student
>>> del s.name # 如果删除实例的name属性
>>> print(s.name) # 再次调用s.name,由于实例的name属性没有找到,类的name属性就显示出来了
Student

类方法,实例方法,静态方法

实例方法,第一个参数必须要默认传实例对象,一般习惯用self。

静态方法,参数没有要求。

类方法,第一个参数必须要默认传类,一般习惯用cls。

# coding:utf-8
class Foo(object):
  """类三种方法语法形式"""

  def instance_method(self):
    print("是类{}的实例方法,只能被实例对象调用".format(Foo))

  @staticmethod
  def static_method():
    print("是静态方法")

  @classmethod
  def class_method(cls):
    print("是类方法")

foo = Foo()
foo.instance_method()
foo.static_method()
foo.class_method()
print('----------------')
Foo.static_method()
Foo.class_method()

运行结果:

是类<class '__main__.Foo'>的实例方法,只能被实例对象调用
是静态方法
是类方法
----------------
是静态方法
是类方法

类方法

由于python类中只能有一个初始化方法,不能按照不同的情况初始化类,类方法主要用于类用在定义多个构造函数的情况。
特别说明,静态方法也可以实现上面功能,当静态方法每次都要写上类的名字,不方便。

# coding:utf-8
class Book(object):

  def __init__(self, title):
    self.title = title

  @classmethod
  def class_method_create(cls, title):
    book = cls(title=title)
    return book

  @staticmethod
  def static_method_create(title):
    book= Book(title)
    return book

book1 = Book("use instance_method_create book instance")
book2 = Book.class_method_create("use class_method_create book instance")
book3 = Book.static_method_create("use static_method_create book instance")
print(book1.title)
print(book2.title)
print(book3.title)
(0)

相关推荐

  • python类:class创建、数据方法属性及访问控制详解

    在Python中,可以通过class关键字定义自己的类,然后通过自定义的类对象类创建实例对象. python中创建类 创建一个Student的类,并且实现了这个类的初始化函数"__init__": class Student(object):     count = 0     books = []     def __init__(self, name):         self.name = name 接下来就通过上面的Student类来看看Python中类的相关内容. 类构造和

  • 基于python3 类的属性、方法、封装、继承实例讲解

    Python 类 Python中的类提供了面向对象编程的所有基本功能:类的继承机制允许多个基类,派生类可以覆盖基类中的任何方法,方法中可以调用基类中的同名方法. 对象可以包含任意数量和类型的数据. python类与c++类相似,提供了类的封装,继承.多继承,构造函数.析构函数. 在python3中,所有类最顶层父类都是object类,与java类似,如果定义类的时候没有写出父类,则object类就是其直接父类. 类定义 类定义语法格式如下: class ClassName: <statement

  • Python 类,property属性(简化属性的操作),@property,property()用法示例

    本文实例讲述了Python 类,property属性(简化属性的操作),@property,property()用法.分享给大家供大家参考,具体如下: property属性的创建方式有两种:1.@property装饰器方式   2.类属性方式 ( 类属性=property() ) property属性可以简化实例对象对属性的操作(获取.设置),可以对属性做类型校验和预处理等. 装饰器方式: demo.py(@property,获取属性值,旧式类与新式类都有的方式): class Goods: @

  • 在python的类中动态添加属性与生成对象

    本文将通过一下几个方面来一一进行解决 1.程序的主要功能 2.实现过程 3.类的定义 4.用生成器generator动态更新每个对象并返回对象 5.使用strip 去除不必要的字符 6.rematch匹配字符串 7.使用timestrptime提取字符串转化为时间对象 8.完整代码 程序的主要功能 现在有个存储用户信息的像表格一样的文档:第一行是属性,各个属性用逗号(,)分隔,从第二行开始每行是各个属性对应的值,每行代表一个用户.如何实现读入这个文档,每行输出一个用户对象呢? 另外还有4个小要求

  • Python类属性与实例属性用法分析

    本文实例分析了Python类属性与实例属性用法.分享给大家供大家参考.具体如下: 类属性:类名.属性名 实例属性:实例.属性名 >>> class test(): ... ver=1 ... >>> a=test() >>> test.x=8 >>> a.__dict__ {} >>> a.x 8 >>> a.x=9 >>> a.__dict__ {'x': 9} 1.类的属性如何

  • Python面向对象class类属性及子类用法分析

    本文实例讲述了Python面向对象class类属性及子类用法.分享给大家供大家参考,具体如下: class类属性 class Foo(object): x=1.5 foo=Foo() print foo.x#通过实例访问类属性 >>>1.5 print Foo.x #通过类访问类属性 >>>1.5 foo.x=1.7 #只改新实例属性,不会改变类属性 print foo.x >>>1.7 print Foo.x >>>1.5 foo.

  • python中类和实例如何绑定属性与方法示例详解

    前言 python类与实例的方法的调用中觉得云里雾里,思考之后将自己的想法记录下,一来加深自己理解,巩固自己记忆,而来帮助一些想要学习python的朋友理解这门抽象的语言,由于Python是动态语言,类以及根据类创建的实例可以任意绑定属性以及方法,下面分别介绍. 1.类绑定属性 类绑定属性可以直接在class中定义属性,这种属性是类属. class Student(object): name = 'Student' 这个属性虽然归类所有,但类的所有实例都可以访问到. class Student(

  • 对python 调用类属性的方法详解

    测试时候类的调用是经常会用到的.简单看下类的调用使用的方法吧. 来看例子: 目录结构: 我们现在要在do_class.py这个文件里调用class_learn.py里的类 代码(do_class.py): #!/usr/bin/env python3 #coding=utf-8 '''@Author:Jock''' from all_python_learn.class_and_funcation.class_learn import * b = Learn(1,2) b.get() print

  • 举例讲解Python面相对象编程中对象的属性与类的方法

    python 对象的属性 进入正题,来看一个实例来了解python中类,对象中公有属性,私有属性及局部变量,全局变量的区别. root@10.1.6.200:~# cat object.py #!/usr/bin/env python #coding:utf8 class Dave(): var1 = "class atribute,public atrribute var1" #类属性,公有属性var1 __var2 = "class self atribute __var

  • Python中如何获取类属性的列表

    前言 最近工作中遇到个需求是要得到一个类的静态属性,也就是说有个类 Type ,我要动态获取 Type.FTE 这个属性的值. 最简单的方案有两个: getattr(Type, 'FTE') Type.__dict__['FTE'] 那么,如果要获取类属性的列表,该怎么做呢? 首先上场的是 dir ,它能返回当前范围的所有属性名称列表: >>> dir() ['__builtins__', '__doc__', '__name__', '__package__'] >>>

  • 全面了解python中的类,对象,方法,属性

    python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象...... 我们通过描述属性(特征)和行为来描述一个对象的.比如家里的小狗,它的颜色,大小,年龄,体重等是它的属性或特征.它会汪汪叫,会摇尾巴等是它的行为. 我们在描述一个真实对象(物体)时包括两个方面: 它可以做什么(行为) 它是什么样的(属性或特征). 在python中,一个对象的特征也称为属性(attribute).它所具有的行为也称为方法(method) 结论:对象

  • Python面向对象之静态属性、类方法与静态方法分析

    本文实例讲述了Python面向对象之静态属性.类方法与静态方法.分享给大家供大家参考,具体如下: 1. 静态属性:在函数前加@property,将函数逻辑"封装"成数据属性,外部直接调用函数名,如同调用属性一样.这个函数是可以调用对象和类的属性的. # -*- coding:utf-8 -*- class Room: def __init__(self,name,owner,width,length): self.name = name self.owner = owner self.

随机推荐