一、创建类与实例
(一)、创建类
根据类来创建对象被称为 实例化,其创建的对象被称为实例;对象是类的实例
class Dog():
def __init__(self, name, age):
"""初始化属性name age"""
self.name = name
self.age = age
'''
参考点5
def __init__(self, name, age):
"""初始化属性name age weighet,并将weight的默认值设为10"""
self.name = name
self.age = age
self.weight = 10
'''
def sit(self):
"""定义一个方法"""
print(self.name.title() + "is now sitting")
1、类的首字母大写,并且其后面的括号为空
2、类中的函数称为方法,例如上面的sit 和 init
3、可通过实例访问的变量称为属性,例如name 与 age
4、Python在创建实例时,会自动传入实参self,其是一个指向实例本身的引用,使实例能够访问类中的属性和方法
5、类中的每个属性都必须要有初始值,哪怕其是0或者空字符串,并且当你对每个属性设置了默认值,则在_ init _ 中,则无需包括该形参
(二)、创建实例
class Dog():
--snip--
my_dog = Dog('while', 6)
1、方法 _ init _()用于接受传输的实参并创建实例,因此实例中的参数只需要根据该方法进行设置即可
(1)、访问属性与调用方法
要访问实例的属性或者调用类中的方法,可使用句点表示法
my_dog.name
my_dog.sit()
1、此处解释了我们在创建类时为什么使用self形参
2、调用方法与创建实例时相同,调用语句中需要包括除self以外的所有实参
二、使用类与实例
(一)、修改属性的值
可以通过实例访问属性并直接修改属性的值
my_dog.name = 'white'
可以通过方法将值进行内部更新
class Dog():
--snip--
def upname(self, new_name):
self.name = new_name
Dog.upname("white")
三、继承
当你要编写的类是另一个类的特殊版本或者说修改版本,可以使用继承。此时,原有的类称为父类,而新类称为子类
(一)、继承父类属性
#创建父类Dog
class Dog():
def __init__(self, name, age):
"""初始化属性name age"""
self.name = name
self.age = age
#创建子类SmallDog
class SmallDog(Dog):
def __init__(self,name, age):
"""初始化父类属性"""
super().__init__(name, age)
1、创建子类时,父类必须包含在当前文件,并且在子类前面
2、在创建子类时,原本的空括号需要指定父类的名称
3、super()函数用于将父类与子类相关联起来,即实现了继承功能,这行代码用于调用父类的_ init _方法,让子类中包含父类的全部属性。
(二)、定义子类属性和方法
#创建父类Dog
class Dog():
def __init__(self, name, age):
"""初始化属性name age"""
self.name = name
self.age = age
#创建子类SmallDog
class SmallDog(Dog):
def __init__(self,name, age):
"""初始化父类属性"""
super().__init__(name, age)
self.size = 20
def run(self):
print("the size of dog is:" + str(self.size))
1、我们添加了子类的独有属性size与方法run
(三)、重写父类方法
在子类中使用父类的方法名称重新定义即可
(四)、将实例用作属性
主要用于将一个结构复杂的大类拆分为一个个小类
#创建父类Dog
class Dog():
"""定义狗的属性"""
def __init__(self, name, age):
"""初始化属性name age"""
self.name = name
self.age = age
#将实例用作属性
class DogSize():
"""定义狗的尺寸属性"""
def __init__(self):
self.size = 20
#创建子类SmallDog
class SmallDog(Dog):
"""定义狗中小狗的属性"""
def __init__(self,name, age):
"""初始化父类属性"""
super().__init__(name, age)
self.sizesize = Dog_Size()
def size(self):
print("the size of dog is:" + str(self.sizesize.size))
1、将子类中用于定义尺寸的放在了类DogSize中
2、调用方法与之前的相同
四、导入类
(一)、导入单个类
from 3 import Dog
1、导入了文件3.py中的Dog类
(二)、从一个模块导入多个类
from dog import Dog, DogSize, SmallDog
1、用逗号分隔各个类
(三)、导入整个模块
from dog
1、导入模块3.py
五、代码风格
(一)、类名命名应采用驼峰法
将类名中的每一个单词的首字母大小,而不使用下划线
(二)、实例名与模块名采用小写格式,并且在单词之间加上下划线
(三)、文档字符串
对于每一个类,都应该在类定义后面包含一个文档字符串。文档字符串应该简要地描述类的功能,并且遵循编写函数的文档字符串时采用的格式约定。
码字不易,希望大家看完有收获的话点个关注和收藏,下周会继续更新python的其他章节,谢谢大家