python 类中的变量、方法

一. python 类中的变量分为类变量,实例变量,self

# coding:utf-8

class A(object):
    date = '20201215'               # 类变量

    def __init__(self):
        self.name = 'Stephen'       # 实例变量

    def __str__(self):
        return self.date + ' ' + self.name


new = A()
print(new)
print(new.date)
print(new.name)

20201215 Stephen
20201215
Stephen

1. 类变量

在类中方法之外定义的变量,在类中使用,不需要实例化,通过self.xx或者class.xx就可使用,实例对象可通过对象.xx进行使用。

2. 实例变量

在类中方法内定义的变量,通过self.xx就可使用,实例对象可通过对象.xx进行使用。

3. self

self就是本类对象

二. 实例方法,静态方法,类方法

class Date:
    day = 10        # 类变量

    def __init__(self, year, month, day):        # 构造函数
        self.year = year
        self.month = month
        self.day = day

    def __str__(self):
        return ("{year}-{month}-{day}").format(year=self.year, month=self.month, day=self.day)

    def yesterday(Date):
        Date.day -= 1

    def print_year(self, number):    # 实例方法
        print(self.year + number)

    @property
    def weather(self):        # 属性方法
        return 'rainny'

    @staticmethod     # 静态方法:校验输入值类型和大小是否符合咱们的类型。
    def var_str(date_str):
        year, month, day = tuple(date_str.split("-"))
        if 0 < int(year) and 0 < int(month) <= 12 and 0 < int(day) < 32:
            return True
        else:
            return False

    @classmethod      # 类方法
    def class_method(cls, date_str):

        if cls.var_str(date_str):  #这里是调用静态方法,注意要用cls.静态方法,原理和实例方法中的self一样,自己可以试试,否则是不能读取的。
            year, month, day = tuple(date_str.split("-"))
            return cls(int(year), int(month), int(day))


new_day = Date.class_method("2018-10-10")
print(new_day)
# 打印结果
2018 - 10 - 10

1. 实例方法

实例方法的是类中最常用的方法,方法本身带self参数,非本类中实例化后才能使用该方法,本类中调用实例方法通过self.xx()

2. 静态方法

  • 静态方法需要加@staticmethod装饰器
  • 静态方法不能调用类变量,类方法,实例变量及实例方法,但是实例方法可以调用静态方法,通过self.XX(),类方法调用静态方法也需要实例化对象后才能使用
  • 静态方法调用类变量,类方法,实例变量及实例方法,需要实例化对象,然后通过对象去调取

3. 类方法

  • 类方法需要加@classmethod装饰器
  • 类方法无需实例化就可调用
  • 在类中类方法调用实例方法和实例变量,需要先实例化类对象,然后才能调用
  • 在类中类方法调用类变量,可直接通过cls.xx的方式直接调用

4. 属性方法

类属性方法无传参且必须有返回值,实例化对象调用的时候通过调取属性的方式进行调用 

三. 构造函数,析构函数

class Person(): #定义类
    def info(self): #实例方法
        self.name='xiaoming'
        print("shi li fang fa")
    def __del__(self): #析构函数,类销毁自动执行
        print("类销毁的时候就执行")

zwj=Person()
zwj.info()
del zwj  #销毁类
print("========")

shi li fang fa
类销毁的时候就执行
========

构造函数,实例化就自动调用该方法,一般该方法会放一些属性或者初始化的东西;

析构函数,类实例被销毁的时候自动执行

参考:python_类里的方法及变量,python3:类方法,静态方法和实例方法以及应用场景,一张图了解python 类方法与类变量 类变量与实例变量

 

你可能感兴趣的:(python,python,类,class)