Python 官方文档:入门教程 => 点击学习
这篇文章主要介绍了python中类怎么定义,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。类的定义# class是定义类的关键字,ClassName为类的名称clas
这篇文章主要介绍了python中类怎么定义,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
# class是定义类的关键字,ClassName为类的名称class ClassName:# 在这里写其他内容passclass ClassName(object):# 在这里写其他内容pass
这是一个最简单的类定义,在python3后类定义一般都会继承object类,不过不继承也没有多大的问题。
类对象也称实例
# 这就是创建了一个类对象(实例),a是一个实例也是一个对象a = ClassName()
类内部里面有:类变量,局部变量,实例变量
类变量:所有类的实例化对象都同时共享类变量,也就是说,类变量在所有实例化对象中是作为公用资源存在的。
class ClassName(object):# 定义一个类变量name = "Tom"
类方法的调用方式有 2 种,既可以使用类名直接调用,也可以使用类的实例化(对象)调用。可以通过类名修改类变量的值,并且修改后,会影响所有的实例化的对象。
# 直接通过类名调用print(ClassName.name)# 创建类的实例(对象)a = ClassName()b = ClassName()// 通过类的实例调用print(a.name)print(b.name)ClassName.name = "Tim"print(a.name)print(b.name)
运行结果为:
Tom
Tom
Tom
Tim
Tim
但如果实例的类变量的值修改后,在通过类名修改变量的值,不会影响这个实例的类变量。
a = ClassName()b = ClassName()a.name = "asf"ClassName.name = "Pig"print(a.name)print(b.name)ClassName.name = "aaa"print(a.name)print(b.name)
运行结果:
asf
Pig
asf
aaa
通过运行结果可知,在对象a改变name值后,再调用Class Name.name = "Pig"
对象a的name变量值没有改变
局部变量:局部变量只定义在类方法内,也只能在方法内使用
class ClassName(object):# 这是一个方法def function(self):# 这是一个局部变量name = "Tom"
name定义在类方法内,所以是局部变量,在外部是无法调用,只能在方法内使用。
实例变量:以self.变量名的方式定义的变量,称为实例变量(属性)
class ClassName(object):# 这是一个实例变量def function1(self):self.name = "Tom"def function2(self):print(self.name)
只作用于调用方法的对象,可以在其他方法内调用。
className = ClassName()className.function()
运行结果:
Tom
如果定义在__init__()
方法中的实例变量,可以同过只能通过对象名访问。
class ClassName(object):def __init__():self.name = "Tom"className = ClassName()print(className.name)
运行结果:
Tom
__name
这就是私有变量,在变量前面加两个_
,self.__name
也是私用变量,私有变量在类外部无法直接进行访问。
class ClassName(object):# 定义了一个私有类变量__name = "Tom" ClassName.__name
运行结果:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<iPython-input-8-08830fea0534> in <module>
2 __name = "Tom"
3
----> 4 ClassName.__nameAttributeError: type object 'ClassName' has no attribute '__name'
在类里面用def
关键字来定义方法,也叫函数。与普通方法的区别是,必须需要一个self
的参数,self
代表类自身
class ClassName(object):def function(self,a):pass
def
为定义函数的关键字,function
为函数的名称,
__init__()
用来初始化类的参数一般叫构造方法
这个方法,我们一般类都会用到。
class ClassName(object):def __init__(self):self.name = "aaa"
当类实例化时,会自动调用__init__
__call__()
将对象当做函数时调用。
class ClassName(object):def __init__(self):self.name = "aaa"def __call__(self):print("aaa")c = ClassName() // 类实例化,执行了__init__()方法c() //执行了__call__()方法
__get__()
类作为另一个类的属性时自动调用
class ClassName:def __init__(self):passdef __get__(self,instance, owner):print("__get__调用了")class ClassName2:a = ClassName()
运行结果:__get__调用了
__new__()
是一种负责创建类实例的静态方法,且该方法会优先 __init__()
初始化方法被调用。
。。。还有很多其他的类特殊方法
继承在生活中是获得父辈的财产,在编程语言中是获得父类的所有变量,方法。通过继承从类上衍生出新的类
简而言之,是继承一个类,所继承的类为基类(父类),继承者为子类
# 父类class A:pass# 子类,继承了A类class B(A):pass
上面是个简单的继承,子类在类名后面的括号内写要继承的类的名称。
# 父类class A:name = "Tom"def getName(self):print("..")# 子类,继承了A类class B(A):passb = B()print(b.name)b.getName()
运行结果:
Tom
..
发现B类没有写什么变量和方法,却调用了A类的变量(属性)和方法
当然如果不想要父类的某个变量或方法,可以重写这个变量或方法
# 父类class A:name = "Tom"def getName(self):print("..")# 子类,继承了A类class B(A):def getName(self):print("bbb")b = B()print(b.name)b.getName()
运行结果:
Tom
bbb
多继承从名称上来看,是继承了多个类
class A:passclass B:passclass C(A, B):pass
上面这个C类同时继承了A类,B类
感谢你能够认真阅读完这篇文章,希望小编分享的“python中类怎么定义”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网Python频道,更多相关知识等着你来学习!
--结束END--
本文标题: python中类怎么定义
本文链接: https://www.lsjlt.com/news/305160.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0