wordpress网站访问慢,宜兴做网站的联系方式,怎么做网站注册登入页面,品牌网python 类里面常用的方法有3个#xff1a;静态方法(staticmethod)#xff0c;类方法(classmethod)和实例方法(self)
1. 函数和方法
1.1 函数#xff1a;
函数定义是由def()关键字定义
def fun():a helloreturn a# 函数调用
res fun()
print(res)1.2 方法-…python 类里面常用的方法有3个静态方法(staticmethod)类方法(classmethod)和实例方法(self)
1. 函数和方法
1.1 函数
函数定义是由def()关键字定义
def fun():a helloreturn a# 函数调用
res fun()
print(res)1.2 方法-实例方法(self)
定义在类中同样也是由def()定义但此时不再是函数而是一种实例化方法。
定义的方法默认在括号里面加一个self参数self 是类本身的实例对象。
在调用的时候需要先进行实例化
class A(object):count 0def fun(self):b worldreturn b# A类不能直接调用fun
# print(A.fun())
a A()
print(a.fun())2. 静态方法(staticmethod)类方法(classmethod)
staticmethod和classmethod就可以不需要实例化直接类名.方法名()调用。
静态方法对类一无所知只处理参数类方法适用于类因为它的参数始终是类本身。类方法可以由类及其对象调用。
2.1 静态方法
staticmethod用于修饰类中的方法使其可以再不创建类实例的情况下调用方法这样做的好处是执行效率较高当然也可像一般方法一样用实例调用该方法。
使用静态方法的好处是可以在不创建类实例的情况下调用该方法从而提高代码的灵活性和可重用性。
静态方法可以不带任何参数由于静态方法没有self参数所以它无法访问类的实例成员静态方法也没有cls参数所以它也无法访问类成员。静态方法既可以通过对象名调用也可以通过类名调用。
class A(object):count 0def fun(self):b worldreturn bstaticmethoddef start():print(start-----)# 不用实例化也能调用
A.start()
# 实例化也能调用
a A()
a.start()2.2 类方法
类方法是绑定到类而不是其对象的方法。class方法始终附加到一个类其中第一个参数作为类本身。不需要实例化类名称直接调用类方法实例化也能调用类方法
例1
class Person:age 25def printAge(cls):print(The age is:, cls.age)Person.printAge classmethod(Person.printAge)
Person.printAge()例2
class Person:age 25classmethoddef printAge(cls):print(The age is:, cls.age)Person.printAge()例1和例2输出一样 所以classmethod等价于Person.printAge classmethod(Person.printAge)
classmethod不需要self参数但第一个参数需要是表示自身类的cls参数。
以下这个例子很好
class DataTest(object):day 0month 0year 0def __init__(self, year0, month0, day0):self.day dayself.month monthself.year yeardef out_date(self):print(year :, self.year)print(month :, self.month)print(day :, self.day)t DataTest(2021, 8, 18)
t.out_date()输出
year :2021
month :8
day :18但是如果用户输入的是 “2016-8-1” 这样的字符格式那么就需要调用Date_test 类前做一下处理
def get_data(cls, string_date):处理2018-8-18字符格式year, month, day map(int, string_date.split(-))return cls(year, month, day)string_date 2018-8-18
year, month, day map(int, string_date.split(-))
s DataTest(year, month, day)
print(s.out_date())那可不可以把这个字符串处理的函数放到 DateTest 类当中呢
classmethod 【类最基本的作用是实例化出一个对象但是有的时候再实例化之前就需要先和类做一定的交互这种交互可能会影响实际实例化的过程所以必须放在调用构造函数之前。】
class DataTest(object):day 0month 0year 0def __init__(self, year0, month0, day0):self.day dayself.month monthself.year yeardef out_date(self):print(year :, self.year)print(month :, self.month)print(day :, self.day)classmethoddef get_data(cls, string_date):处理2018-8-18字符格式year, month, day map(int, string_date.split(-))return cls(year, month, day)定义一个get_data类方法处理完字符串后返回这个类的实例对象。这样有一举两得的效果在处理字符串的同时还能实现实例化。
r DataTest.get_data(2018-8-18)
r.out_date()参考 https://zhuanlan.zhihu.com/p/544021480 https://blog.csdn.net/qq_46906413/article/details/124332735