python学习笔记之类与对象

在开发中经常需要自定义一些对象。
根据类来创建对象,对象是类的实例。
像int() float() bool() str() list() dict() 都是类,内置类以小写字母开头,自定义类使用大写字母开头。
语法:

class Myclass():
	pass
mc=MyClass()
mc_2=MyClass()  #创建了两个对象,均为一类对象,都是MyClass实例

isinstance()用来检查一个对象是否是一个类的实例。
例如 isinstance(mc, MyClass)
类也是一个对象,是一个创建对象的对象。
对象的创建流程:1、创建一个变量mc;2、在内存中创建了一个新对象;3、将对象的id赋值给变量。
可以向对象中添加变量,对象中的变量称为属性。
语法:对象.属性名 = 属性值(可为任意对象)
例:mc.name = ‘beauty’

类的定义

类和对象都是对现实生活中的事物或程序中的内容的抽象。由两部分构成:数据(属性)+行为(方法)。属性为实例的公共属性。方法即类中的函数,调用语法:对象.方法名()

属性和方法查找流程:当调用一个对象的属性时,解析器会先在当前对象中寻找是否有该属性,如果有,则返回;反之则会去当前对象的类对象中去寻找。一般情况下,属性保存到实例对象中,而方法需要保存到类对象中。

类的特殊方法init

在类中可以定义一些特殊方法,都是以__(双下划线)开头,__结尾的方法,不需要自己调用,会在特殊时刻自动调用。
例:

class Person:
	def __init__(self,name):
		self.name = name
	def say_hello(self):
		print('Hello,I am %s'%self.name)

所以p1=Person()的运行流程为:1、创建一个变量;2、在内存中创建一个新对象;3、init(self)方法执行,对象创建以后立即执行;4、将对象的id赋值给变量。

类的基本结构

class 类名([父类]:
	公共属性
	#对象的初始化方法:
	def __init__(self,arg...):
		self.arg = arg #这里的arg指各个参数等。
	#其他方法
	def method_1(self,...):
		代码块
	def method_2(self,...):
		代码块

封装

面向对象的三大特性之一。能隐藏对象中一些不希望被外部所访问到的属性或方法。
getter获取对象中的指定属性(get_属性名);
setter用来设置对象的指定属性(set_属性名)。
例:

#(1)先隐藏
self.hidden_arg = arg

#(2)
def get_arg(self):
	return self.hidden_arg
#(3)
def set_arg(self):
	self.hidden_arg = arg

使用封装,确实增加了类的定义的复杂程度,但是它也保证了数据的安全性:(1)隐藏了属性名,使调用者无法随意的修改对象中的属性。(2)增加了getter和setter方法,很好的控制属性是否是只读的。只读:去掉setter方法;不能访问:去掉getter方法。(3)使用setter方法设置属性,可以增加数据的验证,确保数据是正确的。

隐藏类中的属性:__(双划线)开头,不能直接访问和修改。但是常用_(单下划线)开头,起个提示作用,告诉别人这是私有属性,若没有特殊需求请不要修改。

继承

例:class Dog(Animal):
Dog为子类,Animal为父类,子类可以直接继承父类中的所有属性和方法。

在创建类时,若省略了父类,则默认父类为object。

方法的重写:如果在子类中有和父类同名的方法,则通过子类实例去调用方法时,会调用子类的方法而不是父类的方法,即重写(覆盖,override)

super():可以用来获取当前类的父类,调用父类方法时,不需要传递self。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值