基本概念

:类是现实世界或者思维世界中的实体在计算机中的反应,它将数据以及对数据的操作封装在一起。
数据成员:用来表征对象特性的属性
成员方法:用来体现对象行为并且封装在类中的函数
类变量:类的变量,抽象层级
实例变量:对象的特征,现实层级
类和对象的关系:类是对某一类象的抽象化,通过类可以产生多个对象

类的声明

类名首字母应该大写,且遵循驼峰法C
定义一个类

class CivilEngineer():
    name = ''
    project = ''

    def __init__(self,name,project):
        self.name = name
        self.project = project


    def eat(self):
        print(self.name + '负责了' + self.project )

实例化

按照不同的属性通过实例化生成不同的对象。

person = Person()
person.showInfo()

构造函数:

通过构造函数可以根据参数生成不同的对象,构造函数在类被实例化时会被自动调用,返回值只能为None

    def __init__(self,name,project):
        self.name = name
        self.project = project

方法的定义

self和php中的$this以及JS中的this关键字作用相同,用来引入内部属性/数据成员或者方法。

    def showInfo(self):
        print(self.name + '今年' + str(self.age) + '岁' )

实例方法

def eat(self):
    print(self.name + '吃东西')

在实例方法的内部访问类变量

可以借助__class__访问类变量:

class Student():
    
    sum = 0 # 类变量
    
    def total(self):
        self.__class__.sum += 1 #操作类变量
        print(self.__class__.sum)


print(Student.sum) #获取类变量
Student().total() # 实例方法操作类变量

类方法

类方法主要用来操作类变量 声明方法如下

在定义方法前增加装饰器 @classmethod,参数列表中传入cls(可更改),类方法用来操作类变量

class Person:
    @classmethod
    def plus_sum(cls):
        pass

类方法对类变量的操作

class Person:
    sum = 0

    @classmethod
    def total(cls):
        print(cls.sum)

Person.total() # 类方法被类调用
Person().total() # 类方法被实例调用

从上面的代码中可以看出,类方法可以更加方便的引用并操作类变量,而不像实例方法那样需要借助__class

!!! 类方法可以被类和实例调用,但不建议使用实例对象调用类方法

静态方法

静态方法通过使用@staticmethod装饰器来声明

class Person:
    sum = 0

    @classmethod
    def total(cls):
        print(cls.sum)

    @staticmethod
    def add():
        print(Person.sum) #实例方法访问类变量
        print('static method')

Person.total() # 类调用类方法
Person.add()  # 类调用静态方法
Person().add() # 实例调用静态方法

python中不常使用静态方法,静态方法可以访问实例变量和类变量

标签: none

分享到: