python中重要的概念:类(class)
Posted laofangtou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中重要的概念:类(class)相关的知识,希望对你有一定的参考价值。
1、名词解释
类:类代表了具有相同特征的一类事物(人)
对象、实例:具体的某一个事物或者是人
实例化:将类变成对象的这么一个过程,即新建一个对象的过程,就是对类的一个实例化过程。
2、格式
函数定义:
def func1(): #这样定义的叫做函数,它是在模块中定义的。
pass
类定义:
class Person():
def func1(self): 在类里定义的函数,叫做方法,而不叫函数,请注意区别。
pass
#类变量,也叫属性定义
name = "张三"
age = 30
#类私有变量定义,前面用双下划线_定义的变量就是私有变量
__private_args = "class private"
#构造函数, 构造函数是在实例化的时候被自动运行的
def __init__(self, name, age):
print("构造函数运行")
p = person() #这里就是实例化一个对象,这一过程中,构造函数被执行
print(p.name)
print(p.age)
print(p.__private_args) #这里会报错,因为__private_args是类的私有变量,对象不可访问
3、构造函数
修改上面的类中构造函数如下:
def __init__(self, name, age, sex):
self.sex = sex
print(self.name)
print(self.age)
print(self.sex)
上面的self.name, self.age, self.sex叫实例变量,如果在构造函数里没有对实例变量定义并赋值,将在类里找对应的同名类变量来作为。所以如果按照上面的构造函数。
在实例化时,p = Person("小红“,“33”,“女”)
执行结果将打印
张三
33
女
因为上面的self.name, self.age没有再构造函数里定义,则使用了同名类变量的默认值。
如果构造函数改成
def __init__(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
print(self.name)
print(self.age)
print(self.sex)
实例化p = Person("小红“,“33”,“女”)将打印
小红
33
女
上面的构造函数中,你可以理解成对类变量的重新复制,但更应该理解成重新定义的实例化变量。
4、私有方法定义
def __my_private_func(self): #双下划线开头
print("私有方法")
5、保护方法定义
def _my_protect_function(self): #一个下划线开头
print("保护方法")
6、类方法定义
@classmethod
def my_calss_method(cls): #这里在方法上面要放一个装饰器,方法的参数里写cls,而不是self.
print("类方法")
7、静态方法定义
@staticmethod
def my_static_method():
print("静态方法")
8、公共方法定义,也叫普通方法
def get_private_args(self): #公共方法是类最常见的方法
return self.__private_args
9、关于self的思考与分析
a、上面的方法中,没有self参数,行不行?
self代表的是一个实例,代表的是每一个类实例化的一个对象,名字可以随便改,但是必须放在第一个位置。比如
def get_private_args(a): #没有用self,而是写了a
return a.__private_args
实例化验证下:
p = Person("大山",40,"男")
print(p.get_private_args())
上面也能得知正确的结果
10、 静态方法调用
Person.my_static_method()
也可以通过实例化后的对象调用
p.my_static_method()
静态方法的低啊用,类不用实例化就可以调用,静态方法一般是这个方法和这个类太大的直接性关系时用到。一般在写工具类的时候可能会用到这种方法。
11、类方法的调用
Person.my_class_method()
也可以通过实例化后的对象调用
p.my_class_method()
12、python中,私有方法在外面能访问吗?
print(Person.__dict__)
能够看到这个类里面包含所有的变量和方法名
print(p._Person__private_args)
p._Person__my_private_method()
答案是:可以访问,只要在私有变量和私有方法前加上_Person(单下划线和类名)
以上是关于python中重要的概念:类(class)的主要内容,如果未能解决你的问题,请参考以下文章