广州番禺Python, Java小班周末班培训
薯条老师在广州做Python和Java的小班培训,一班最多10人,学员的平均就业薪资有11K。不在广州的同学可以报名线上直播班,与线下小班的同学们同步学习。培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Python量化投资,Java中高级后端开发。授课详情请点击:http://chipscoco.com/?cate=6
16.4.1 类的构造函数
在对类进行实例化时,如果没有定义构造函数,那么Python会自动调用一个默认的无参构造函数来进行实例化。对类进行实例化以后,可以返回一个构造好的对象。类构造函数的语法结构:
class ClassName: def __init__(self): pass
类体中的__init__函数即是构造函数,参数self表示当前对象。同学们需将对象方法与类方法区分开来:类方法是全局的,而对象方法是局部的。不论是self还是cls, 都是一种通用的写法,同学们也可以将其修改为其它的参数名。
对于对象方法,Python会自动地将当前当前对象与self参数进行绑定,无需显式地传递。
在对类进行实例化时,Python会自动执行类的构造函数,我们可以写一段简单的代码进行验证,在构造函数中执行print方法:
# __desc__ = 在构造函数中进行输出 class Cat: # 定义类属性species,来表示猫所属的物种 species = "Cat" # 定义类方法时需要在函数前加上一个@classmethod的修饰符 # 函数至少定义一个参数,参数名通常为cls @classmethod def catch_mice(cls): # cls表示当前的Cat类,通过.来访问类属性和类方法 print("it is the nature of {} to catch mice".format(cls.species)) # 定义类的构造函数 def __init__(self): print("a cat was born") # 对Cat类进行实例化,kitty即为实例化后的Cat对象 kitty = Cat()将以上代码写入Python脚本中,然后在PyCharm或命令行中执行起来,会看到以下输出:
a cat was born
这说明在对类进行实例化时,Python自动地调用了构造函数。在类的构造函数中,可以定义任何参数。一旦定义了参数,那么在对类进行实例化时,必须传递参数。参数传递方式同普通的函数一样,可以按位置参数或关键字参数的方式进行传递。
代码实例:
# __desc__ = 在构造函数中定义参数 class Cat: # 定义类属性species,来表示猫所属的物种 species = "Cat" # 定义类方法时需要在函数前加上一个@classmethod的修饰符 # 函数至少定义一个参数,参数名通常为cls @classmethod def catch_mice(cls): # cls表示当前的Cat类,通过.来访问类属性和类方法 print("it is the nature of {} to catch mice".format(cls.species)) def __init__(self,name): print("the cat named {} was born".format(name)) # 对Cat类进行实例化时必须传递与构造函数一致的参数 # self参数,Python会自动将当前对象进行绑定,无需传递 kitty = Cat("kitty") """ 将代码写入到Python脚本中,然后在PyCharm中执行,会看到下面的输出: the cat named kitty was born """
16.4.2 对象属性
对类进行实例化时,可以得到一个构造好的对象。如果对类进行N次实例化,那么会得到N个对象。在16.3节中讲到了类属性,类属性为所有对象共享,也就是说即便你定义了十个还是一百个对象,它们都共享类属性。类属性是全局的,为所有对象共享,而对象属性是局部的,只作用于当前对象。定义对象属性,需通过self参数进行定义。定义对象属性的基本语法:
self.name = valueself表示当前对象,.是成员操作符,self.name表示为对象定义一个名为name的属性,value表示属性的值。
代码实例:
# __desc__ = 在构造函数中定义对象属性 class Cat: # 定义类属性species,来表示猫所属的物种 species = "Cat" # 定义类方法时需要在函数前加上一个@classmethod的修饰符 # 函数至少定义一个参数,参数名通常为cls @classmethod def catch_mice(cls): # cls表示当前的Cat类,通过.来访问类属性和类方法 print("it is the nature of {} to catch mice".format(cls.species)) def __init__(self,name): # 定义一个name的属性,然后将参数name进行赋值 self.name = name # 此时访问的是对象属性 print("the cat named {} was born".format(self.name)) # 对Cat类进行实例化时必须传递与构造函数一致的参数 # self参数,Python会自动将当前对象进行绑定,无需传递 kitty = Cat("kitty") """ 将代码写入到Python脚本中,然后在PyCharm中执行,会看到下面的输出: the cat named kitty was born """
16.4.3 对象方法
在16.3节中讲到了类方法,类方法为所有对象共享,也就是说即便你定义了十个还是一百个对象,它们都共享类方法。类方法相当于一个全局方法,而对象方法是局部的,只作用于当前对象。定义对象方法时,需至少定义一个参数,第一个位置形参通常命名为self。定义对象方法的基本语法:
def method(self): passmethod表示方法名,self参数表示当前对象。现在同学们参照以下步骤,为Cat类扩展对象属性和对象方法:
(1) 在磁盘中编辑cat.py
用PyCharm打开D:\Python3-Learning\chapter16目录下的cat.py。并输入以下代码:
代码实例:
# __desc__ = 在构造函数中定义参数 class Cat: # 定义类属性species,来表示猫所属的物种 species = "Cat" # 定义类方法时需要在函数前加上一个@classmethod的修饰符 # 函数至少定义一个参数,参数名通常为cls @classmethod def catch_mice(cls): # cls表示当前的Cat类,通过.来访问类属性和类方法 print("it is the nature of {} to catch mice".format(cls.species)) def __init__(self,name): # 定义一个name的对象属性,然后将参数name赋值给name属性 self.name = name # 定义一个名为miaow的对象方法 def miaow(self): # 可以通过self参数来访问和定义对象属性 # 也可以通过self参数来访问对象方法 # 因为self表示的是当前对象 print("the cat named {} miaow when unhappy".format(self.name)) # 对Cat类进行实例化时必须传递与构造函数一致的参数 # self参数,Python会自动将当前对象进行绑定,无需显式传递 kitty = Cat("kitty") # 调用对象方法miaow, Python会自动将对象与self参数进行绑定,无需显式传递 kitty.miaow()(2) 执行cat.py
可以直接在PyCharm中执行dog.py,点击run菜单下面的run子菜单。也可以进入命令行,切换到D:\Python3-Learning\chapter16,然后执行python cat.py。脚本程序运行成功以后,会看到下面的输出:
the cat named kitty miaow when unhappy
16.4.5 最具实力的小班培训
薯条老师在广州做Python和Java的小班培训,一个班最多10人。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。打算参加小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。
(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,免费领取课程大纲
(3) Java后端开发工程师高薪就业班,月薪11K-20K, 免费领取课程大纲
(4) Python大数据分析,量化投资就业班,月薪12K-25K,免费领取课程大纲
扫码免费领取Python学习资料: