面向对象编程 1


面向对象编程(OOP),是一种编程方式,这种编程方式需要使用“对象”来实现。

面向对象的特征

1、世间万物皆对象
  某个具体的领域也是有对象组成的。
  例如:在学校领域。对象包括学生、教室和成绩单等;在银行领域,对象包括银行账户、出纳员等。
2、每个对象都是唯一的
  对象的唯一性来自于真实世界中事物的唯一性。
  世界上不存在两篇一模一样的叶子,因此在软件系统中的对象也具有唯一性。
3、对象具有属性和行为
  队形的行为包括具有的功能及具体的实现。
4、对象具有状态
  状态是之某个瞬间对象的各个属性的取值。
  对象的某些行为往往会改变对象自身的状态,即属性的取值。
5、对象分为类对象和实例对象两大类
  类对象是具有相同属性和行为的实例对象的抽象。
  类对象就是实例对象的模板,实例对象是由类对象创造出来的。
  此外,同一个类对象的所有实例对象如果具有相同的属性,表明它们的属性的含义是相同的。

面向对象编程的大体步骤

1、抽象出类对象
2、抽象出类对象的属性
3、抽象出类对象的行为(方法)
4、根据类对象创建实例对象
5、通过实例对象访问属性和方法

定义类对象的语法格式

class 类名(object):
	#属性与方法

其中:
  1、类名的一个或多个单词组合而成,每个单词的首字母大写且其余字母全部小写,例如:SomeClass
  2、(object)表示该类对象能继承自Python内置的类对象object,Python中所有的类对象都继承自一个统一的基类:object。

初识属性

行为(方法)是列中特殊的函数

例如:
class Cat(object):
	def _init_(self, breed, name, age, health):
		self.breed = breed      #品种
		self.name = name      #昵称
		self.age = age            #年龄
		self.health = health    #健康状况
	# 跑
	def run(self):
		print("Cat is running")
	# 喵
	def miao(self):
		print("Cat is miaoing")
	# 吃
	def eat(self):
		print("Cat is eating") 

类的方法与函数的区别:

方法就是定义正在类对象中的函数,方法与函数的区别在于:
  1、定义方法时,方法的第一形参表示调用该方法的实例对象,第一个形参的名称通常是self,也可以是其它名称。
  2、调用方法时,系统自动将该方法的实例对象作为参数传递给第一个形参,第一份实参会传递给第二个形参,第二个实参会传递给第三个形参,一次类推。

根据类对象创建实例对象的语法格式为`

类名([实参])

# 根据类对象创建实例对象
cat = Cat("波斯猫", "喵喵", 1, "很好")
print(cat. breed)
print(cat.name)
print(cat.age)
print(cat.health)

cat.run()
cat.miao()
cat.eat()

实例属性

实例属性指的是实例对象所绑定的属性
绑定实例属性(给实例对象绑定属性)的方式有两种:
1、在类对象的内部(方法中)
  语法格式:self.属性名 = 属性值
  推荐在特殊方法_init_中进行绑定。这样,在创建实例对象后就会自动调用特殊方法_init_对实例对象进行初始化,从而绑定实例属性。如果在其他方法中进行绑定,可能需要手动调用方法后才会绑定。
2、在类对象的外部
  Python 是动态语言,所以,在实例对象创建之后,可以对其动态地绑定属性。
  语法格式:实例对象.属性 = 属性值
  如果指定名称的实例属性已经存在,则是对实力属性进行修改。
访问实力属性的方式有两种:
1、在类对象的内部(方法中)
  语法格式:self.属性名
2、在类对象的外部
  语法格式:实现对象.属性名
  之所以添加前缀“self”或“实例对象”,是为了表明实例属性被哪个实例对象所绑定

例如:
>>> class MyClass(object):
	       def _init_(self):
              # 在类对象的内部(方法中)绑定实例属性
		      self.ia1 = 18
	
  	       def do_sth1(self):
		       # 在类对象的内部(方法中)访问实力属性
	      	   print(self.ia1)
		
	         def do_sth2(self):
		         print(self.ia2)

	         def do_another(self):
		         #在类对象的内部(方法中)绑定实例属性
		         self. ia2 = 56

	          def do_sth3(self):
		         print(self.ia3)

>>> mc = MyClass()
>>> mc.do_sth1()
18

实例对象.dict

可获得该实例对象所绑定的所有属性及其值得字典

>>> mc.__dict__
{'ia1':18, 'ia2':56}

>>> dir(mc)

类属性

类属性指的是类对象所绑定的属性
绑定类属性(给类对象绑定属性)的方式有两种:
1、在类对象的内部(方法中)
  语法格式:属性名 = 属性值
2、在类对象的外部
  Python是动态语言,所以,在类对象创建之后,可以对其动态地绑定属性。
  语法格式:类对象.属性名 =属性值
  如果指定名称的类属性应存在,则是对类属性进行修改。

函数装饰器

  对于某个函数,如果我们希望在不改变函数代码的前提下,为该函数增加额外的功能,那么就可以使用装饰器来装饰该函数
  装饰器是一个函数,装饰器接收一个函数作为参数(转入的实参是被装饰的函数)
  装饰器的内部嵌套定义另一个函数,内函数中会引用装饰器的参数
  并且装饰器的返回值是内函数
  为了让内函数接收任意类型的参数,将内函数的形参定义为(*args,**kwargs)。在函数中,首先完成为被装饰函数添加的新功能,然后调用被装饰的函数。
  把装饰器应用到被装饰函数的语法为:在被装饰函数的的前面添加“@装饰器的函数名”。

def notice(func):
	def wraper(*args,**kwargs):
		print("公告:请注意身体!")
		print("`````````````")
	   return func *args,**kwargs
	return wraper

类方法指的是类对象中使用装饰器@classmethid进行修饰的方法
  在类对象中定义类方法时,必须使用装饰器@classmethid进行,此外,第一个形参表示类对象,其对应的实参由系统自动传入。第一个形参的名称通常是cls,也可以是其他名称。
  类方法可以被类对象所调用,语法格式:类对象.方法名([实参]) 或:cls.方法名([实参])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值