类(没整理好)

- 类(class):用来描述具有相同的属性和方法的对象的集合,它定义了该集合中每个对象所共有的属性和方法,对象是类的实例
- 类是一个独立存放变量(属性,方法)的空间,它定义了该集合中每个对象共有的属性和方法
- 类由类名,属性(变量),方法(函数)组成,类名约定俗成用大驼峰
- 对象:通过类定义的数据结构实例,对象包括两个数据成员(类变量和实例变量)和方法,对象是类的实例化
- 方法:类中定义的函数
- 变量在类中称为属性,但是类中的属性不仅仅只包含变量,函数等其他的对象也可以作为类的属性
- 类变量:类变量在整个实例化的对象中是共用的,类变量定义在类中且在函数体之外	
- 函数是代码块的封装,类是函数的封装
- 类是一类事物的抽象,不是真是存在的。描绘了该类事物的共性

实例

- 实例是某类事物的具体个体,是该类事物的具体表现,它是真实存在的。
- 实例变量:定义在方法中的变量,只作用于当前实例的类
- 实例化:创建一个类的实例,类的具体对象,对象是类的实例化
- 实例也是一个独立存放变量的空间,每一个实例都是一个独立的变量空间,不同实例之间的空间互相不可见

私有属性

- 私有属性属于这个类,一般不要外面调用,保护起来
-Python中私有属性有两种,一个下划线_和两个下划线__
	- 以一个下划线_开头,私有属性,可以在外面调用,约定俗成不在外面调用
	- 以两个下划线__开头,强制私有属性,在外面调用不了

类创建

- 创建类:使用class语句来创建一个新类,class之后为类的名称并以冒号结尾:
- 定义在类里面,函数外面的变量是类全局
- 优先访问实例属性,再访问类属性
- 类属性:共性,实例属性:特性
案例1:
class Person:   #定义类
		var1 = "直接封装在类中的变量" 	#类属性
print(Person.var1)
Person.var2 = "后来封装在类中的变量"    #在类外添加类属性
print(Person.var2)
p = Person()    #实例化
print(p.var1)   #类属性访问
print(p.var2)
案例2:
class Person:   
    pass
p1 = Person()
p2 = Person()
p1.var = "在实例中封装的变量"	#对象添加的属性,它的空间是独立的
							#实例属性,其他的访问不到
print(p1.var)
#实例化对象既能访问实例属性,也能访问类属性
#类只能访问类属性,实例属性访问不到
~~print(Person.var)~~     #类中找不到,不会去找实例中的
~~print(p2.var)~~ 	#p2没有,去找Person也没有

- 类里面凡是加了self的变量都称之为类属性,类里面的其他方法也可以访问
- 没加self的变量(并在函数里面)是普通变量,类里面其他函数访问不了

类的方法

- 实例本身就拥有的数据,要访问这些数据没必要从外面的函数去访问,可以直接在类的内部定义访问数据的函数,这样就把数据给封装起来了,这些封装数据的函数和类本身是关联起来的,我们称之为类的方法
- 通常,将默认会传入的那个参数命名为self,用来表示调用这个方法的实例对象本身。
- 要定义一个方法,除了第一个参数是self外,其他和普通函数一样,要调用一个方法,只需要在实例变量上直接调用,除了self不用传递,其他参数正常传入
- 封装的另一个好处是可以给类增加新的方法
	class Person:		#类方法,实例不可调用
	    	def eat(self):		#实例方法,类和实例都可调用
	        	print("{} is eating".format(self.name))
	p1 = Person()
	p1.name = "xiaoming"
	p2 = Person()
	p2.name = "xiaohong"
	p1.eat()
	p2.eat()	#xiaoming is eating
			  xiaohong is eating







class Employee:
	empCount = 0
	def __int__(self,name,salary):
		self.name = name
		self.salary = salary
		empCount += 1
	def displayCount(self):		#此函数可省略
		print("Total Employee %d"%Employee.empCount)
	def displayEmployee(self):
		print("Name:",self.name,",Salary:",self.salary)
emp1 = Employee(lilei,2999)
emp2 = Employee(hanmeimei,3000)
emp1.displayEmployee()
emp2.displayEmployee()
print("Total Employee %d"%Employee.empCount)	
#Name: Zara ,Salary: 2000
  Name: Manni ,Salary: 5000
  Total Employee 2

猜你喜欢

转载自blog.csdn.net/xiaogeldx/article/details/84038495