面向对象编程

对象的特征

1.世间万物皆对象

2.每个对象都是唯一的

3.对象具有属性和行为

4.对象具有状态

5.对象分为类对象和实例对象两大类

面向对象编程的大体步骤

抽象出类对象

抽象出类对象的属性

抽象出类对象的行为(方法)

根据类对象创建实例对象

通过实例对象访问属性和方法

抽象:

class Cat(object):
	pass

定义类对象的语法格式:

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

注意:

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

初始属性:

猫类具有的属性:
1、品种
2、昵称
3、年龄
4、健康状况等
例如:

class Cat(object):
	def __init__(self, breed, name, age, health):
		self.breed = breed		#品种
		self.name = neme		#昵称
		self.age = age			#年龄
		self.health = health	#健康情况
为了在创建实例对象后对其进行初始化(例如:给实例对象绑定一些属性),可以在类对象中定义一个名为__init__的特殊方法(一双下划线__开头和结尾的方法)。这样,创建实例对象后就会自动调用特殊方法__init__。
如果没有定义特殊方法__init__,或者定义了特殊方法__init__但是么有定义除self之外的形参那么根据类对象创建实例对象是就不需要传入实参。
如果在类对象中定义了特殊方法__init__,那么对于"类名([实参])",会执行量大步:
  1. 创建实例对象
  2. 自动调用创建的实例对象的特殊方法__init__(创建的实例对象会作为实参被自动传递给特殊方法__init__的第一个形参self)。

初识类的方法:

猫具有的行为:(行为(方法)是类中特殊的函数)
1、跑
2、喵喵叫
3、吃东西
例如:

#跑
def run(self):
	print("Cat is running.")
#喵
def miao(self):
	print("Cat is miaoing.")
#吃
def eat(self):
	print("Cat is eatting")

类的方法与函数的区别:

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

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

类名([实参])

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

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

实例属性

实例属性指的是实例对象所绑定的属性。
绑定实例属性(给实例对象绑定属性)的方式有两种:

  1. 在类对象的内部(方法中)
    语法格式:self.属性名 = 属性值
    推荐在特殊方法__init__中进行绑定,这样, 在创建实例对象后就会自动调用特殊方法__init__对象实例对象进行初始,从而绑定实例属性。如果在其他方法中进行绑定,可能需要手动调用方法后才会绑定。
  2. 在类对象的外部
    Python是动态语言,所以,在实例对象创建之后,可以对其动态地绑定属性。
    语法格式:实例对象.属性名 = 属性值
    如果指定名称的实例属性已经存在,则是对实例属性进行修改。
    访问实例属性的方式有两种:
  3. 在类对象的内部(方法中)
    语法格式:self.属性名
  4. 在类对象的外部
    语法格式:实例对象.属性名

之所以添加前缀"self"或"实例对象",是为了表明实例属性被哪个实例对象所绑定

class MyClass(object):
	def __init__(self):
		#在类对象的内部(方法中)绑定实例属性
		self.ial = 18
	def do_sthl(self):
		#在类对象的内部(方法中)访问实例属性
		print(self.ial)
	def do_sh2(self):
		print(self.ia2):
	def do_another(self):
		#在内对象的内部(方法中)绑定实例属性
		self.ia2 = 56
	def do_sth3(self):
		print(self.ia3)
mc.do_sth3()
#在类对象的外部绑定实例属性
mc.ia3 = 66
print(mc.ia3)
66
mc.do_sh3()
66
mc2 = MyClass()
print(mc2.ia3)
mc = MyClass()
mc.do_sthl()
18
mc.do_sth2()
mc.do_another()
mc.do_sh2()
56
mc.ia3 = 88
print(mc.ia3)
88
mc.do_sth3()
mc.do_sth3()
88
同一个类对象的不同实例对象所绑定的实例属性是相互独立的。也就是说,给一个实例对象所绑定实例属性,对于另外一个实例对象是不起作用的。
## 实例对象.__dict__
可获得该实例对象所绑定的所有属性及其值的字典。
mc.__dict__
{'ial':18, 'ia2':56, 'ia3':88}
dir(mc)
mc2.__dict__
dir(mc2)
{'ial':18}

类属性

类属性指的是对类对象所绑定的属性。

  1. 绑定类属性(给类对象绑定属性)的方式有两种:
    语法格式:属性名 = 属性值
  2. 在类对象的外部
    Python是动态语言,所以,在类对象创建之后,可以对其动态地绑定属性
    语法格式:类对象.属性名 = 属性值
    如果指定名称的类属性已经存在,则是对类属性进行修改。
  3. 在类对象的内部(方法中)
    语法格式:self.属性名
  4. 在类对象的外部
    语法格式:实例对象.属性名
    类对象的所有实例对象都有一个指定类对象的指针,所以,类对象的所有实例对象都可以访问类属性。

之所以添加前缀"self"或"实例对象",是为了表明实例属性被哪个实例对象所绑定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值