Python学习日记 Day10类与对象(上)

今天是2020年2月19日,多云,4~12℃

最近周围很多同学都开始上网课了,然而我只加了群,还没有老师通知上课的方式和时间,搞得我有点发慌。正式开网课之后每天的进度估计会变得更少(虽然现在已经每天都在划水了)。

一、创建类

class 关键字用于类的定义,类的定义中包含属性和方法。属性是类的成员变量;方法是类的成员函数。

'''
class ClassName(Base1,Base2,...):
	<statement>
'''
class Person():
	self.name = "Anonymous"		#属性
	def print_name(self):		#方法
		print(self.name)

类名后的空括号表示该类不继承其他类(或仅继承 object 类)。
self是对象自身的引用:它规定了该 属性/方法 为实例对象的 属性/方法;若不加self,则 属性/方法 将变为一个类 属性/方法(静态 属性/方法 )。
同一类的不同对象,属性不可能完全相同。因此需要一个特殊的方法 init 为实例对象提供信息。

Class Person():
	def __init__(self,name):	#__init__ 方法
		self.name = name
	def print_name(self):
		print(self.name)

与C++等语言不同,Python的属性不需要在定义类时声明,而是在创建变量并赋值时直接生效。
init 方法的首尾双下划线表示这是一个系统定义的名字。在写自定义的方法时避免使用这种命名法。

此外还有单下划线开头和双下划线开头的属性和方法。
单下划线开头类似 protected 修饰,仅自身类对象和子类对象可以访问。
双下划线开头类似 private 修饰,仅自身类对象可以访问。
在使用时,可以通过名称改编的形式绕过封装访问这两种类型的属性和方法,但良好的编程习惯是不要在外部使用它。

二、创建和使用实例

1、创建实例

创建实例的方式为:首先指定变量名,再像使用函数一样使用类名,参数为 init 方法的参数表,并使用等号赋值。

person_1 = Person("Blair")

2、访问对象与调用方法

完成实例对象的创建后,就可以使用该实例访问对象的属性,调用对象的方法了。

print(person_1.name)		#访问name属性  Output:Blair
person_1.print_name()		#调用print_name方法  Output:Blair

3、为属性添加默认值

为属性添加默认值可以通过默认值参数,也可以直接为属性赋值。

Class Person():
	def __init__(self,name="Anonymous"):	#默认值参数
		self.name = name
		self.age = 18						#直接为属性赋值
	def print_name(self):
		print(self.name)

在直接为赋值时,也可以像其它编程语言声明属性一样,将赋值的语句放到 init 方法之前(外)。但一般实例属性写在 init 方法内,而类属性写在外。

4、修改属性

在程序运行过程中,对象的属性经常需要发生变化,这就需要修改对象的属性。

● 直接修改属性

对于未加 _ 或 __ 修饰的属性,可以在类外直接访问。由此我们可以直接对他赋值进行修改。

person_1.name = "Micheal"	#改名
person_1.print_name()		#Output:Micheal

这种方式虽然很简单,但是破坏了类的封装性,可能在使用时引发意外错误。

● 通过方法修改属性

对于使用了 _ 或 __ 修饰的属性,只能通过类的方法修改属性。当然,对未修饰的属性也可以使用这个方式。

class Person():
	#新增方法
	def change_name(self,name):
		self.name = name
person_1.change_name("Micheal")
person_1.print_name()		#Output:Micheal

出于类的封装性和操作的安全性的角度考虑,通常使用这种方式。

发布了17 篇原创文章 · 获赞 1 · 访问量 490

猜你喜欢

转载自blog.csdn.net/weixin_44712386/article/details/104390817