class 类
def 方法
xxx= xxx 实例
class Abc():
def __init__(self,abc,abc)
self.abc=abc
self.abc=abc
def def_g(self):
print()
my_abc = Abc(11,11)
print(my_abc.def_g())
一、类定义:
class <类名>:
<语句>
类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性。如果直接使用类名修改其属性,那么将直接影响到已经实例化的对象
类的私有属性:
__private_attrs 两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs
类的方法
在类地内部,使用def关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数self,且为第一个参数
私有的类方法
__private_method 两个下划线开头,声明该方法为私有方法,不能在类地外部调用。在类的内部调用slef.__private_methods
类的专有方法:
__init__ 构造函数,在生成对象时调用
__del__ 析构函数,释放对象时使用
__repr__ 打印,转换
__setitem__按照索引赋值
__getitem__按照索引获取值
__len__获得长度
__cmp__比较运算
__call__函数调用
__add__加运算
__sub__减运算
__mul__乘运算
__div__除运算
__mod__求余运算
__pow__称方
class Dog():
def __int__(self,name,age):
self.name = name
self.age = age
def sit(self):
print(self.name.title()+ " is now sitting.")
def roll_over(self):
print(self.name.title()+ " rolled over!")
在Python中,首字母大写的名称是类
__init__()是一个特殊的方法,每当根据类创建新实例时,Python都会自动运行它。__init__(self,name)这个构造函数的左右下划线都是两个
方法_init_()定义成包含三个形参,self.name.age.其中形参self必不可少,还必须位于其他形参的前面。每个与类相关联的方法调用都自动传递实参self,他是一个指向实例本身的引用。
以self为前缀的变量都可供类中的所有方法使用。self.name = name获取存储在形参name中的值,并将其存储到变量name中,然后该变量被关联到当前创建的实例。
my_dog = Dog('willie',6)
print("My dog's name is " + my_dog.name.title() +".")
print("My dog is " + str(my_dog.age) + " years old."
我们通常可以认为首字母大写的名称(如Dog)指的是类,而小写的名称(如my_dog)指的是根据类创建的实例。
要访问实例的属性,可使用句点表示法。my_dog.name
在类里面可以定义一个值,可以设置成初始为0的
def __init__(self,make,model,year):
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
继承
创建子类时,父类必须包含在当前文件中,且位于子类前面。同时必须在括号内指定父类的名称。
例如:
class ElectricCar(Car):
继承了父类Car类下的所有功能,属性和类型
super()是一个特殊函数,帮助Python将父类和子类关联起来。
例如:
def __init__(self,make,model,year):
super().__init__(make,model,year)
这行代码让Python调用ElectricCar的父类的方法__init__(),让ElectricCar实例包含父类的所有属性。
给子类定义属性的时候写在子类的下面,只会定义给子类,不会给父类。
模块
定义模块,只要使用文本编辑器,把一些python代码输入到文本中,然后以.py为后缀名进行保存,任何此类文件都会被认为是python模块。
然后将一个类保存为一个模块,必须用更具体的文件名,如my_car.py
import car 将整个的car模块导入进来。
from car import Car 打开模块car,导入其中的Car类。 后面的Car可以
载入一个类,也可以多个,中间用","隔开。
类编码风格
采用驼峰命名法,将类名中的每个单词的首字母都大写,实例名和模块名都采用小写格式,并在单词之间加上下划线。
在类定义后面包含一个文档字符串,每个模块也都应包含一个文档字符串。
在类中,可使用一个空行来分隔方法,而在模块中,可使用两个空行来分隔类。
需要同时导入标准库中的模块和你编写的模块时,先编写导入标准库模块的import语句,再添加一个空行,然后编写导入你自己编写的模块的Import语句。