龙空技术网

python面向对象-类的定义

HyRer 288

前言:

今天你们对“python中类的属性”都比较看重,同学们都需要剖析一些“python中类的属性”的相关资讯。那么小编也在网络上搜集了一些有关“python中类的属性””的相关内容,希望咱们能喜欢,各位老铁们一起来了解一下吧!

类即类别、种类,是面向对象设计最重要的概念,对象是特征与技能的结合体,而类则是一系列对象相似的特征与技能的结合体

在程序中:务必保证先定义类,后产生对象

这与函数的使用是类似的,先定义函数,后调用函数,类也是一样的,在程序中需要先定义类,后调用类

不一样的是,调用函数会执行函数体代码返回的是函数体执行的结果,而调用类会产生对象,返回的是对象

声明类

'''class 类名:    '类的文档字符串'    类体'''#我们创建一个类class Data:    pass
class Person:   #定义一个人类    role = 'person'  #人的角色属性都是人    def walk(self):  #人都可以走路,也就是有一个走路方法,也叫动态属性        print("person is walking...")
在程序中,务必保证:先定义(类),后使用(产生对象)
PS:  1. 在程序中特征用变量标识,技能用函数标识  2. 因而类中最常见的无非是:变量和函数的定义
#程序中的类class Student:    school='changan'    def learn(self):        print('is learning')            def eat(self):        print('is eating')        def sleep(self):        print('is sleeping')#注意:  1.类中可以有任意python代码,这些代码在类定义阶段便会执行  2.因而会产生新的名称空间,用来存放类的变量名与函数名,可以通过Student.__dict__查看  3.对于经典类来说我们可以通过该字典操作类名称空间的名字(新式类有限制),但python为我们提供专门的.语法  4.点是访问属性的语法,类中定义的名字,都是类的属性
#程序中类的用法.:专门用来访问属性,本质操作的就是__dict__Student.school #等于经典类的操作Student.__dict__['school']Student.school='changan' #等于经典类的操作Studentt.__dict__['school']='changan'Student.x=1 #等于经典类的操作Student.__dict__['x']=1del Student.x #等于经典类的操作Student.__dict__.pop('x')
#程序中的对象#调用类,或称为实例化,得到对象s1=Student()s2=Student()s3=Student()#如此,s1、s2、s3都一样了,而这三者除了相似的属性之外还各种不同的属性,这就用到了__init__#注意:该方法是在对象产生之后才会执行,只用来为对象进行初始化操作,可以有任意代码,但一定不能有返回值class Student:    ......    def __init__(self,name,age,sex):        self.name=name        self.age=age        self.sex=sex    ......s1=Student('小明','男',18) #先调用类产生空对象s1,然后调用Student.__init__(s1,'小明','男',18)s2=Student('小红','女',17)s3=Student('小军','男',18)#程序中对象的用法#执行__init__,s1.name='小明',很明显也会产生对象的名称空间s2.__dict__{'name': '小红', 'age': '女', 'sex': 17}s2.name #s2.__dict__['name']s2.name='小红' #s2.__dict__['name']='小红's2.course='python' #s2.__dict__['course']='python'del s2.course #s2.__dict__.pop('course')在程序中:先定义类,后产生对象
类属性的补充
我们定义的类的属性到底存到哪里了?有两种方式查看dir(类名):查出的是一个名字列表类名.__dict__:查出的是一个字典,key为属性名,value为属性值特殊的类属性类名.__name__# 类的名字(字符串)类名.__doc__# 类的文档字符串类名.__base__# 类的第一个父类(在讲继承时会讲)类名.__bases__# 类所有父类构成的元组(在讲继承时会讲)类名.__dict__# 类的字典属性类名.__module__# 类定义所在的模块类名.__class__# 实例对应的类(仅新式类中)
类有两种作用:属性引用和实例化属性引用(类名.属性)
class Person:   #定义一个人类    role = 'person'  #人的角色属性都是人    def walk(self):  #人都可以走路,也就是有一个走路方法        print("person is walking...")print(Person.role)  #查看人的role属性print(Person.walk)  #引用人的走路方法,注意,这里不是在调用
实例化:类名加括号就是实例化,会自动触发__init__函数的运行,可以用它来为每个实例定制自己的特征
class Person:   #定义一个人类    role = 'person'  #人的角色属性都是人    def __init__(self,name):        self.name = name  # 每一个角色都有自己的昵称;            def walk(self):  #人都可以走路,也就是有一个走路方法        print("person is walking...")xiaoming = Person()print(xiaoming.role)  #查看属性直接 对象名.属性名print(xiaoming.walk()) #调用方法,对象名.方法名()
#类型dict就是类dict>>> list<class 'list'>#实例化的到3个对象l1,l2,l3>>> l1=list()>>> l2=list()>>> l3=list()#三个对象都有绑定方法append,是相同的功能,但内存地址不同>>> l1.append<built-in method append of list object at 0x10b482b48>>>> l2.append<built-in method append of list object at 0x10b482b88>>>> l3.append<built-in method append of list object at 0x10b482bc8>#操作绑定方法l1.append(3),就是在往l1添加3,绝对不会将3添加到l2或l3>>> l1.append(3)>>> l1[3]>>> l2[]>>> l3[]
对象/实例只有一种作用:属性引用
class Person:   #定义一个人类    role = 'person'  #人的角色属性都是人    def __init__(self,name):        self.name = name  # 每一个角色都有自己的昵称;            def walk(self):  #人都可以走路,也就是有一个走路方法        print("person is walking...")xiaoming = Person()print(xiaoming.role)  #查看属性直接 对象名.属性名print(xiaoming.walk()) #调用方法,对象名.方法名()
class 类名:    def __init__(self,参数1,参数2):        self.对象的属性1 = 参数1        self.对象的属性2 = 参数2    def 方法名(self):    	pass    def 方法名2(self):    	  pass对象名 = 类名(1,2)  #对象就是实例,代表一个具体的东西                  #类名() : 类名+括号就是实例化一个类,相当于调用了__init__方法                  #括号里传参数,参数不需要传self,其他与init中的形参一一对应                  #结果返回一个对象对象名.对象的属性1   #查看对象的属性,直接用 对象名.属性名 即可对象名.方法名()     #调用类中的方法,直接用 对象名.方法名() 即可

标签: #python中类的属性