目录
1. 类和对象
类:具备相同特征或者行为的一个群体: 对象: 个体 类:模型 (造对象) 对象: 模型生出来(造出来)具体的东西。
2. 实例属性和类属性的区别
类属性定义:类名下面或者类外面, 可以在其他的方法当中定义,但是不建议 class 类名: 类属性1 = 属性值 def __init__(self, name): self.name = name 类名.类属性other = 属性值。 实例属性: 类里面和类外面 __init__ 方法定义,或者 类名().实例属性 先天具备的属性,不管是类属性,实例属性,通常在类名下面, __init__ 直接定义好。 后天培养的属性,不管是类还是实例,都可以在 其他的方法当中定义, 类外面定义
实例属性和类属性的区别和联系:
类属性,可以被实例、对象访问 ;实例属性, 不可以被类获取
实例可以获取 实例属性和类属性 ;类只能获取类属性
3. 方法
3.1 方法 vS 函数:
1, self
2, 放在类里面,缩进的。
3, 调用过程不一样。 方法需要加前缀,类名或者对象名。 函数前面要么不加,要么加的模块名。
3.2 方法的调用
对象.方法() ,即:类名().方法()
3.3 实例方法 vs 类方法 vs 静态方法
3.3.1 实例方法,对象方法
1, 第一个参数名称,规定是 self,
2, 实例方法在调用的时候,前缀是对象,不能是类
3.3.2 类方法
1, 在方法的上面添加 @classmethod
2, 把实例方法当中的 self 改成 cls
3.3.3 静态方法
静态方法表示: 方法的上面加上一个 @staticmethod 不需要用 self, cls 作为固定参数
静态方法的调用:
(静态方法是普通函数) 与普通函数的区别在于,在调用静态方法时,前面加上类名或者对象名;类外面的普通函数,在被调用时不需要加类,模块
(联系: 实例方法, 实例具备的,类不一定具备。 类不能调用实例方法 self 获取实例 类方法, 类具备的, 实例可以获取 类方法可以直接通过 cls 获取类 静态方法:放在类里面的函数。 def static_demo 类(对象).static_demo)
4. __init__
初始化:通过定义的类得到一个具体的对象,通过 __init__ 实现 通常在里面定义实例属性。 实例属性的两种定义: 第1种, 类外面: 对象名.属性 第2种, 类里面: self.属性 实例属性的值通过参数传递进来。 __init__ 定义的形式参数 和 对象的实例化 a = 类名() 的实际参数,是一一对应的。 1. 必须 return None 2. 传入的参数必须要设置成实例属性,才能被被对象访问到。 self: 在 **类里面** ,表示一个 **对象** cls, : 在 **类里面** ,表示一个 **类**
5. self
类定义的里面表示:对象 cls, 类里面表示:类
6. 继承
6.1 继承的表示
class 子类名(父类名):
pass
继承, 继承时单边的,即只能子类继承父类
6.2 多重继承
class 子类名(父类1,父类2,父类3):
pass
7. 重写
子类可以实现自己独有的方法。子类可以覆盖父类的方法,即 重写
8. super()
super() 超继承:使用父类中的方法
9. 类属性的动态设置
class Fruits:
def __init__(self, name):
self.name= name
fruits= Fruits('橙子')
# 对象.属性
print(fruits.name)
# 动态获取属性
print(getattr(fruits, 'name'))
# 设置 set 属性。
setattr(fruits, 'name', '西瓜')
print(fruits.name)