• 静态属性:

类调用函数属性时,需要先将类实例化,再将实例作为函数属性传入;类的实例调用函数属性时需要在后面加括号。

class Building:
def __init__(self, name, owner, width, length):
self.name = name
self.owner = owner
self.width = width
self.length = length def a(self):
print('a') def cal_area(self):
return self.length * self.width B1 = Building('艺术楼', '艺术学院', 100, 100)
print(Building.cal_area)
# <function Building.cal_area at 0x107f11f28>
print(Building.cal_area(B1))
#
print(B1.cal_area())
#

类中提供了@property关键字,@property可以看成是一个装饰器。因此,类的实例可以直接通过点调用函数属性而不需加括号就能执行。此时,该函数属性就可称为静态属性

class Building:
def __init__(self, name, owner, width, length):
self.name = name
self.owner = owner
self.width = width
self.length = length def a(self):
print('a') @property
def cal_area(self):
return self.length * self.width B1 = Building('艺术楼', '艺术学院', 100, 100)
print(Building.cal_area)
# <function Building.cal_area at 0x107f11f28>
print(B1.cal_area)
#
print(Building.cal_area(B1))
# TypeError: 'property' object is not callable
  • 类方法

类的方法前加@classmethod,不需要实例化,直接调用类的该方法。可以访问类的数据属性,但是不可以访问对象的数据属性。

class Building:
tag = 'nice' def __init__(self, name, owner, width, length):
self.name = name
self.owner = owner
self.width = width
self.length = length @classmethod
def is_beauty(cls):
print(cls)
print('这个房间很%s' % (cls.tag))
# print(cls.name) # 不能访问实例对行的数据属性,报错: AttributeError: type object 'Building' has no attribute 'name' B1 = Building('艺术楼', '艺术学院', 100, 100)
Building.is_beauty()
# <class '__main__.Building'>
# 这个房间很nice
B1.is_beauty()
# <class '__main__.Building'>
# 这个房间很nice
  • 静态方法

类的方法前加@staticmethod,该方法均可被实例和类调用,但不能访问类属性以及实例属性,仅仅当做工具包使用。

class Building:
tag = 'nice' def __init__(self, name, owner, width, length):
self.name = name
self.owner = owner
self.width = width
self.length = length @staticmethod
def is_static_method(a, b, c):
print(a, b, c) B1 = Building('艺术楼', '艺术学院', 100, 100)
B1.is_static_method(1, 2, 3)
# 1 2 3
Building.is_static_method(1, 2, 3)
# 1 2 3

Python面向对象之静态方法、静态方法与类方法的更多相关文章

  1. Python面向对象05 /私有成员、类方法、静态方法、属性、isinstance/issubclass

    Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/issubclass 目录 Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/is ...

  2. python面向对象(类的成员及类方法)

    类的普通成员 字段 方法 属性 类的高级成员 静态字段 静态方法 属性方法   类方法 类成员修饰符 类的成员 类的成员可以分为三大类:字段.方法和属性 注:所有成员中,只有普通字段的内容保存对象中, ...

  3. python 面向对象专题(五):私有成员、类方法、静态方法、属性、isinstance/issubclass

    https://www.cnblogs.com/liubing8/p/11325421.html 目录 Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/issubc ...

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

    Python面向对象静态方法,类方法,属性方法 属性: 公有属性 (属于类,每个类一份) 普通属性 (属于对象,每个对象一份) 私有属性 (属于对象,跟普通属性相似,只是不能通过对象直接访问) 方法: ...

  5. Python面向对象 --- 新旧式类、私有方法、类属性和类方法、静态方法

    一.Python面向对象中的新旧式类 1)新式类(推荐使用):在定义类时,类后边括号里要继承基类(object).在python3.x中若没有指定父类,会默认使用的是object作为基类:在pytho ...

  6. Python面向对象之类属性类方法静态方法

    类的结构 实例 使用面向对象开发时,第一步是设计类: 当使用 类名() 创建对象时,会自动执行以下操作: 1.为对象在内存中分配空间--创建对象: 2.为对象的属性 设置初始值--初始化方法(init ...

  7. python 面向对象 类方法,静态方法,property

    property 内置装饰器函数 只在面向对象使用 把方法当初属性使用(方法不加参数) 例子: class Rectangle: def __init__(self,long,wide,color): ...

  8. python面向对象学习(六)类属性、类方法、静态方法

    目录 1. 类的结构 1.1 术语 -- 实例 1.2 类是一个特殊的对象 2. 类属性和实例属性 2.1 概念和使用 2.2 属性的获取机制 3. 类方法和静态方法 3.1 类方法 3.2 静态方法 ...

  9. python面向对象中类对象、实例对象、类变量、实例变量、类方法、实例方法、静态方法

    1. 类对象和实例对象 Python中一切皆对象,Python类本身也是一种对象,类定义完成后,会在当前作用域中定义一个以类名为名字的命名空间.类对象具有以下两种操作: 可以通过“类名()”的方式实例 ...

  10. 『无为则无心』Python面向对象 — 58、类方法和静态方法

    目录 1.实例方法 2.类方法 (1)类方法特点 (2)类方法使用场景 3.静态方法 (1)静态方法特点 (2)静态方法使用场景 1.实例方法 实例方法既可以调用静态方法也可以调用类方法. # 定义一 ...

随机推荐

  1. ntp服务及时间同步问题

    今有一小型项目,全然自主弄,原来以为非常easy的NTP服务.我给折腾了2个多小时才整撑头(曾经都是运维搞,没太注意,所以这技术的东西.在简单都须要亲尝啊).这里记录为以后别再浪费时间. 目标环境,5 ...

  2. iOS应用主流UI架构实现

    一.介绍 如今iOS开发过程中,最常见的一种UI架构是:界面底部是四五个tab bar .中间是内容显示.顶部是包括标题及返回等操作button,当点击进入某个模块后可以点击进行返回.这样的架构的应用 ...

  3. GitLab创建项目

    创建自己的项目:通过地址进入 在文件夹下使用git bash进行 git init,然后ctrl+右键使用TortoiseGit>右键setting 然后再右键setting 拷贝代码时注意要h ...

  4. jcaptcha进阶

    1.改动CaptchaServiceSingleton类.使用带參构造方法来创建DefaultManageableImageCaptchaService对象. watermark/2/text/aHR ...

  5. c26---文件包含include

    // // main.c // 文件包含 #include <stdio.h> // 函数可以重复声明, 但不能重复定义 void test(); void test(); void te ...

  6. Java-JDK:JDK清单

    ylbtech-Java-JDK:JDK清单 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部     6.返回顶部   作者:ylbtech出处:http://y ...

  7. 中文分词--最大正向与逆向匹配算法python实现

    最大匹配法:最大匹配是指以词典为依据,取词典中最长单词为第一个次取字数量的扫描串,在词典中进行扫描(为提升扫描效率,还可以跟据字数多少设计多个字典,然后根据字数分别从不同字典中进行扫描).例如:词典中 ...

  8. ASP.NET MVC上传文件 未显示页面,因为请求实体过大。解方案

    在Dropzone中设置   maxFilesize: 350, //MB 但上传的文件没有到最大限定350MB,就报出来 未显示页面,因为请求实体过大的错误 Web.config中设置  maxAl ...

  9. python基本数据类型之元祖tuple

    元祖tuple 是对列表的二次加工,书写格式为括号(),里面放元素 元组的一级元素不可被修改,且不能被增加和删除 一般写元组的时候,推荐在最后加入逗号,  能加则加 创建元组 ? 1 tu = (11 ...

  10. c语言system()介绍

    2013-09-0916:06:02 1. 头文件: #include <stdlib.h> 2. 定义函数: int system(const char * string); 3. 函数 ...