自由式学习
72人加入学习
(0人评价)
Python_Python基础语法(QZ)
价格 免费
该课程属于 2265-吴同学-python数据分析-就业:否 请加入后再学习

1.类对象所拥有的方法,需要@startimcemethod 来表示静态方法

2.静态方法不需要参数。

3.静态方法主要用来存放逻辑性的代码,本身和类以及实例对象没有交互,也就是说,在静态方法中,不会涉及到类中方法和属性的操作。

[展开全文]
#!usr/bin/env python 
# -*- coding:utf-8 -*- 
""" 
@author: haozhengwei 
@file: 类方法和静态方法.py 
@time: 2022/01/10 
@desc: 
"""
# 类方法:类对象所拥有的方法,需要用装饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数,
# 类方法可以通过类对象、实例对象调用
class People:
    country='China'
    #类方法需要用@classmethod修饰
    @classmethod
    def get_country(cls):
        return cls.country
        pass
    @classmethod
    def change_country(cls, data):
        cls.country=data#在类方法中修改类属性
        pass
    pass
print(People.get_country())#通过类对象去引用
P=People()
print('实例对象访问', P .get_country())
People.change_country('英国')
print(People.get_country())


# 静态方法:类对象所拥有的方法,需要用@staticmethod来表示,静态方法不需要任何参数。
class Person(object):
    country ='China'
    def __init__(self, name):
        self.name = name
    #静态方法用staticmethod装饰
    @staticmethod
    def get_country():
        print(Person.country)

people = Person('xiaoming')
result = Person.get_country()#注意,一般情况下,我们不会通过实例对象去访问静态方法,减少资源开销。
#为什么要使用静态方法呢?
#由于静态方法主要来存放逻辑性的代码,本身和类以及实例对象没有交互,在静态方法中不会涉及到类中方法和属性的操作。
#数据资源能够得到有效利用

#demo 返回当前时间
#返回当前的系统时间
import time
class TimeTest:
    def __init__(self,hour, min, second):
        self.hour = hour
        self.min = min
        self.second = second
    @staticmethod
    def showTime():
        return time.strftime('%H:%M:%s',time.localtime())
        pass
    pass
print(TimeTest.showTime())
t=TimeTest(2, 10, 5)
print(t.showTime())

#类方法、实例方法、静态方法对比
# 1、类方法的第一个参数是类对象cls,通过cls引用的类对象的属性和方法;
# 2、实例方法的第一个参数是实例对象self,通过self引用的可能是类属性、也有可能是实例属性
# 不过,存在相同名称的实例属性和类属性的情况下,实例属性的优先级更高。
# 静态方法中不需要额外定义参数,因此在静态方法中引用类属性的话,必须通过类对象来引用。
[展开全文]

授课教师

高级算法工程师
老师

课程特色

图文(1)
视频(130)
考试(13)