python24 面向对象的绑定方法 类与类之间的继承

## 类属性与对象属性

类中应该仅存储所有对象共有的内容

? 如所有人的国籍相同那就放到类中

对象中存储每个对象独有的内容

? 如每个人的名字都不同

## __init__方法的作用

init 是初始化的缩写 用于为对象的属性设置初始值

特点:

```
# 执行时机:当实例化产生对象时会自动执行该函数
# 会自动传入需要初始化的对象
# 初始化必须包含至少一个参数 用于表示对象本身
# 该函数不允许有返回值 必须为None
```

## 绑定方法

绑定即两个东西绑在一起

方法就是函数

那就是说绑定方法 == 绑定函数

默认情况下 在类中定义的方法 都是绑定方法

绑定方法 是把函数和对象绑定到一起

为什么要绑定:

每个应用程序其实本质上都是在处理数据,那就必须明确 要处理的数据在哪里,如何处理

绑定方法的好处在于,将需要处理的数据 以及处理数据的方法绑定在一起,这样一来 当你获得一个对象就同时获得 数据以及 相应的处理方法 ,简单的调用即可

### 绑定方法与普通函数的区别

当使用类调用时,就是一个普通函数 有几个参数就得传几个参数

当用对象来调用时,是一个绑定方法了,会自动将对象作为第一个参数传入

一个类中可以有属性和方法

方法分为两种

1.绑定方法

? 1.1对象绑定方法

? 在使用对象调用时会自动传入对象本身

? 1.2类绑定方法

? @classmethod

? 在使用对象调用时会自动传入类本身

? 在使用类来调用时也会自动传入类本身

? 单例模式中就会经常使用@classmethod

到底绑定给谁?

当你的方法执行过程中需要使用到对象中数据时就绑定给对象

当你的方法执行过程中需要使用到类中数据时就绑定给类

2.非绑定方法

即不需要对象中的数据 也不需要类中的数据  那就定义为非绑定方法,就是普通函数

@staticmethod

oop知识点:

1.属性应该放在类中还是对象中

2.绑定方法  == 绑定函数

对象绑定方法

? 对象调用时 自动传入对象本身

? 类调用时不会自动传参 有几个就需要传几个

类绑定方法

? @classmethod

? 无论是对象还是类调用 都会自动传入类本身

非绑定方法(静态方法)

? @staticmethod

? 谁调用都不会自动传参

# 在使用面向对象编程时  首先要想的时 需要什么对象,这些对象具备什么样的属性和什么样的行为,根据属性和行为创建对应的类

# 继承:

继承指的是一种关系,在生活中通过继承关系,例如王思聪继承王健林,对于王思聪可以,可以直接使用王健林已经拥有的

被继承的一方(王健林) 称之为父   继承的一方(王思聪) 称之为子

在OOP中 继承描述是类和类之间的关系  例如b类继承a类  b类可以直接使用a类中的属性和方法

a是父类(基类,超类)  b是子类(派生类)

好处:极大的提高了代码的复用性

如何使用继承,至少需要两个类

语法:

class 子类名称(父类名称):

? pass

```python
class Teacher:
    school = "oldboy"
    def __init__(self,name,age):
        self.name = name
        self.age = age

def say_hi(self):
        print("hello i am %s" % self.name)
       
    def teach(self):
        print("正在教书......")

class Student(Teacher):
    pass

print(Student.school)
print(Student.say_hi)
print(Teacher.say_hi)

s = Student("rose","123")
s.say_hi()
s.teach()

在上述案例中通过继承 学生就拥有了老师的所有内容  但是学生不应该教书这个技能
意味着这个继承关系 有问题 不合理
需要先抽象 在继承
```

# 抽与继承

继承之后可以直接使用父类的属性和方法

使用继承时 应该先抽象 在继承

抽象指的是 将一系列类中相同的特征和相同行为抽取 形成一个新的类

会产生一些与原本业务不想关的类

站在不同角度会得到不同的抽象结果

![抽象过程](C:\Users\dell\Desktop\抽象过程.png)

案例:

```python
# 抽象得到的公共父类
class OldBoyPerson:
    school = "oldboy"
    def __init__(self,name,age):
        self.name = name
        self.age = age

def say_hi(self):
        print("hello i am %s" % self.name)

class Teacher(OldBoyPerson):
    def teach(self):
        print("正在教书......")

class Student(OldBoyPerson):
    pass

# 测试
t = Teacher("owen",38)
t.say_hi()
t.teach()

s = Student("歌王",20)
s.say_hi()

```

原文地址:https://www.cnblogs.com/llx--20190411/p/10875683.html

时间: 2024-11-29 06:09:45

python24 面向对象的绑定方法 类与类之间的继承的相关文章

面向对象,绑定方法与异常处理(七)

1.1 继承与派生 1.1.1 什么是继承     是一种新建类的方式,新建的类称为子类,子类会遗传父类的属性,可以减少代码冗余     在python中,子类(派生类)可以继承一个或者多个父类(基类,超类)   python中类的继承分为:单继承和多继承 class Parent1: #定义父类 pass class Parent2(object): #定义父类 pass class Sub1(Parent1): ##单继承,基类是Parent1,派生类是Sub1 pass class Sub

三 面向对象之绑定方法与非绑定方法

一 绑定方法 二 非绑定方法 三 classmethod和staticmethod的区别 一 绑定方法 绑定方法(绑定给谁,谁来调用就自动将它本身当作第一个参数传入): 1. 绑定到类的方法:用classmethod装饰器装饰的方法.                 为类量身定制                 类.boud_method(),自动将类当作第一个参数传入               (其实对象也可调用,但仍将类当作第一个参数传入) 2. 绑定到对象的方法:没有被任何装饰器装饰的方

Python基础day-21[面向对象:多态,绑定方法]

多态: 指的是一种事物的多种形态. 例如: 数据类型有多种形态:字符串,列表,元组 动物的多种形态:狗,猫,老虎,狮子... 一个抽象类有多个子类,因而多态的概念依赖于继承. import abc class A(metaclass=abc.ABCMeta): @abc.abstractmethod def talk(self): #子类必须有 talk方法 pass class B(A): def talk(self): print('say Hi') class C(A): def talk

Python面向对象编程 绑定方法

类的函数属性绑定给不同对象,是不同的绑定方法.对象调用绑定方法时会把对象本身当做self参数传入 示例代码 class People: country = 'China' ? def __init__(self, name, sex, age): self.Name = name self.Sex = sex self.Age = age ? def test(self): print(self) ? ? conan = People('Conan', 'male', 8) wukong = P

面向对象之绑定方法与非绑定方法(day7)

一.类中定义的函数分成两大类 1.绑定方法(绑定给谁,谁来调用就自动将它本身当作第一个参数传入): 1)绑定到类的方法:用classmethod装饰器装饰的方法. 为类量身定制 类.boud_method(),自动将类当作第一个参数传入(其实对象也可调用,但仍将类当作第一个参数传入) 2)绑定到对象的方法:没有被任何装饰器装饰的方法. 为对象量身定制 对象.boud_method(),自动将对象当作第一个参数传入(属于类的函数,类可以调用,但是必须按照函数的规则来,没有自动传值那么一说) 2.非

面向对象之绑定方法与非绑定方法

#切记:绑定方法:绑定给谁就应该由谁来调用,谁来调用就会把谁当做第一个参数自动传入 class MySQL: def __init__(self,host,port): self.host=host self.port=port def func(self): print('%s 说:你好啊我的天' %self.name) @classmethod #不依赖self.属性 传入时使用 def from_conf(cls): return cls(settings.HOST,settings.PO

【2020Python修炼记】面向对象编程——绑定方法与非绑定方法

[目录] 一.绑定方法与非绑定方法 二.非绑定方法 一.绑定方法与非绑定方法 ? 类中定义的函数分为两大类:绑定方法和非绑定方法 ? 其中绑定方法又分为绑定到对象的对象方法和绑定到类的类方法. ? 在类中正常定义的函数默认是绑定到对象的,而为某个函数加上装饰器@classmethod后,该函数就绑定到类了. 类方法通常用来在__init__的基础上提供额外的初始化实例的方式: # 配置文件settings.py的内容 HOST='127.0.0.1' PORT=3306 # 类方法的应用 imp

面向对象5(方法的重载、重写、继承)

class Person{ private String name; private String location; Person(String name) { this.name = name;   location = "BeiJing"; } //方法的重载 Person (String name ,String location){ this.name = name;   this.location = location; } public String info(){ re

面向对象 --- 类的绑定方法,面向对象高阶

昨日回顾 类的绑定方法 classmethod(类的绑定方法) 翻译过来是一个类方法,是一个装饰器,可以装饰给类内部的方法,使该方法绑定给类来使用. --- 对象的绑定方法的特殊之处:由对象来调用,会将对象当作第一个参数传给该方法 --- 类的绑定方法的特殊之处:由类来调用,会将类仿作第一个参数传给该方法 通过对象也可以调用,只是默认传递的第一个参数还是这个对象对应的类 staticmethod(非绑定方法) 是一个装饰器,可以装饰类内部的方法,使该方法即不绑定给对象,也不绑定给类.谁都可以调用