python中类的属性和方法介绍

作者:laozhang 时间:2023-10-22 05:14:47 

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)
标签:python,类
0
投稿

猜你喜欢

  • JavaScript每天必学之基础知识

    2024-04-18 10:02:25
  • 解析:清除SQL被注入恶意病毒代码的语句

    2024-01-14 22:05:21
  • python实现XML解析的方法解析

    2021-08-20 01:58:58
  • Python人工智能构建简单聊天机器人示例详解

    2022-03-10 04:42:29
  • 宝塔面板成功部署Django项目流程(图文)

    2022-07-29 13:11:19
  • javascript中typeof操作符和constucor属性检测

    2024-05-09 10:37:27
  • python放大图片和画方格实现算法

    2023-05-21 15:22:41
  • pandas修改DataFrame列名的方法

    2021-07-18 16:41:24
  • 不要用强制方法杀掉python线程

    2021-04-10 09:19:18
  • MySQL数据库锁机制原理解析

    2024-01-17 14:29:11
  • 前端模板引擎

    2010-07-27 12:33:00
  • 微信小程序开发之实现心情记事本

    2024-04-18 09:45:20
  • python的列表生成式,生成器和generator对象你了解吗

    2022-05-15 15:10:04
  • 一个ASP.NET的MYSQL的数据库操作类自己封装的

    2024-01-17 16:43:21
  • Python操作mysql数据库实现增删查改功能的方法

    2024-01-19 13:02:18
  • Python中使用haystack实现django全文检索搜索引擎功能

    2023-06-30 07:21:03
  • Python I/O与进程的详细讲解

    2022-11-27 14:07:15
  • 详解python 注释、变量、类型

    2023-10-27 10:01:18
  • SQL Server数据库管理常用SQL和T-SQL语句

    2009-05-07 14:01:00
  • Centos8(最小化安装)全新安装Python3.8+pip的方法教程

    2022-11-09 06:00:27
  • asp之家 网络编程 m.aspxhome.com