资讯专栏INFORMATION COLUMN

python 类

leanote / 3379人阅读

摘要:类方法,第一个参数必须要默认传类,一般习惯用。特别说明,静态方法也可以实现上面功能,当静态方法每次都要写上类的名字,不方便。

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()

运行结果:

是类的实例方法,只能被实例对象调用
是静态方法
是类方法
----------------
是静态方法
是类方法
类方法

由于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)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42675.html

相关文章

  • Python实例一个背后发生了什么

    摘要:好吧,事实上,类本身也是实例,当然,它们是元类的实例。中的一切都是对象,它们要么是类的实例,要么是元类的实例,除了。 写在最前面 一些很重要的知识,我的写得有点乱,也可以去看这些文章 Python 面向对象(初级篇) Python 面向对象(进阶篇) 深刻理解Python中的元类(metaclass) 首先来看一个例子,正常情况下我们定义并且实例一个类如下 class Foo(ob...

    shusen 评论0 收藏0
  • Python基础之(八)

    摘要:方法绑定方法多重继承实例化实现了方法和实例的绑调用绑定方法非绑定方法在子类中,父类的方法就是非绑定方法,因为在子类中,没有建立父类的实例,却要是用父类的方法。 类 创建类 第一形式 # !/usr/bin/env python # coding=utf-8 class Person(object): #object表示继承自object类,Python3中可省略次内容 ...

    Freeman 评论0 收藏0
  • 关于Python属性与实例属性的讨论

    摘要:之所以想写这个文章是因为碰巧看到网上一篇关于中类属性及实例属性区别的帖子。中属性的获取对于属性,我们通常采用类属性或实例属性的形式调用。最关键的地方在于两点理解是如何利用查找树的机制来模仿类及实例之间的关系理解动态语言是可以动态设置属性的 标题名字有点长。 之所以想写这个文章是因为碰巧看到网上一篇关于Pyhon中类属性及实例属性区别的帖子。因为我之前也被这个问题困扰过,今天碰巧看到了...

    neroneroffy 评论0 收藏0
  • 从能做什么到如何去做,一文带你快速掌握Python编程基础与实战

    摘要:本文的分享主要围绕以下几个方面能做什么常见应用场景介绍如何学习语法基础实战面向对象编程实战练熟基础小游戏项目的实现与实战一能做什么一种编程语言往往可以应用于多方面,有些方面比较常用,有些方面极为常用。比如表示是一个空列表。 摘要:Python语言的教程虽然随处可见,但是忙于日常业务/学习的你或许:一直想要找个时间学一点,但是又不知道该从何下手?本文将从Python能做什么,如何学习Py...

    BLUE 评论0 收藏0
  • Python 3 入门,看这篇就够了

    摘要:缩进不一致,会导致运行错误。变量变量在使用前必须先定义即赋予变量一个值,否则会报错数据类型布尔只有和两个值,表示真或假。 简介 Python 是一种高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python 由 Guido van Rossum 于 1989 年底在荷兰国家数学和计算机科学研究所发明,第一个公开发行版发行于 1991 年。 特点 易于学习:Python ...

    Shimmer 评论0 收藏0
  • [译]理解python的metaclass

    摘要:但我并不是一个翻译者并不会严格遵守每行每句的翻译有时候我会将表述换个顺序省略一些我认为无关紧要的话,以便读者更好理解。类也是对象在理解之前,我们先要掌握中的类是什么。这个对象类自身拥有产生对象实例的能力。不过这样做是为了保持向后兼容性。 前言 这篇博客是我在stackoverflow上看了一个提问回复后写的,例子基本用的都是e-satis本人的例子,语言组织也基本按照翻译来。 但我并不...

    liuchengxu 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<