课堂笔记11-面向对象,类的定义

课堂笔记

1. ⾯向对象简介

Python是⼀⻔⾯向对象的编程语⾔
所谓⾯向对象的语⾔,简单理解就是语⾔中的所有操作都是通过对象来进⾏ 的
⾯向过程
⾯向过程指将我们的程序分解为⼀个⼀个步骤,通过对每个步骤的抽象来 完成程序
这种编写⽅式往往只适⽤于⼀个功能,如果要实现别的功能,往往复⽤性 ⽐较低
这种编程⽅式符号⼈类的思维,编写起来⽐较容易

⾯向对象的编程语⾔,关注的是对象,⽽不注重过程,对于⾯向对象⼀切皆 对象以上⽅式可以⽤ 孩⼦妈妈给孩⼦买⽠来解决

⾯向对象的编程思想,将所有功能统⼀保存到对应的对象中,要使⽤某个功 能,直接找到对应的对象即可

这种编码⽅式⽐较容易阅读,并且易于维护,容易复⽤。但是编写的过程中 不太符合常规的思维,编写相对麻烦

2. 类(class)

我们⽬前学习的都是Python的内置对象,但是内置对象并不都能满⾜我们的 需求,所以我们在开发中经常要⾃定义⼀些对象
类简单理解它就是相当于⼀个图纸,在程序汇总我们需要根据类来创建对 象。
类就是对象的图纸
我们也称对象是类的实例(instance)
如果多个对象是通过⼀个类创建的,我们称这些对象是⼀类对象
1 # 语法 2 class 类名([⽗类]): 3 pass
类也是⼀个对象,类就是⽤来创建对象的对象
可以像对象中添加变量,对象中的变量称之为属性
语法:对象.属性名 = 属性 值 3. 类的定义 类和对象都是对现实⽣活中事物的抽象 事物包含两部分

  1. 数据(属性)
  2. ⾏为(⽅法)
    调⽤⽅法 对象.⽅法名()
    ⽅便调⽤和函数调⽤的区别:如果是函数调⽤,调⽤时有⼏个形参,就会传 递⼏个实参。如果是⽅法调⽤,默认传递⼀个参数,所以⽅法中⾄少得有⼀ 个形参
    在类代码块中,我们可以定义变量和函数
    变量会成为该类实例的公共属性,所有的该实例都可以通过 对象.属性名 的形式访问
    函数会成为该类实例的公共⽅法,所有该类实例都可以通过 对象.⽅法名 的形式访问
# 类名首字母大写
class Chinese:
    # 用赋值语句,创建类的属性
    eye = 'black'

    # 创建实例方法时,不要漏了 self
    def eat(self):
        print('吃饭,选择用筷子。')
--------------------------------------------------
class Computer:
    screen = True

    def start(self):
        print('电脑正在开机中……')

my_computer = Computer()
print(my_computer.screen)
my_computer.start()
----------------------------------------------------------
# 可以在刚刚创建的Chinese类基础上调用
class Chinese:
    # 用赋值语句,创建类的属性
    eye = 'black'

    # 创建实例方法时,不要漏了 self
    def eat(self):
        print('吃饭,选择用筷子。')
amy=Chinese()
print(amy.eye)
amy.eat()
--------------------------------------------------------------
class Chinese:

    name = '球球'  # 类属性name

    def say(self, someone):  # 带有两个参数的方法
        print(someone + '是中国人')

person = Chinese()
print(person.name)
person.say('我') 
---------------------------------------------------------
class Chinese:

    name = '球球'  # 类属性name

    def say(self):     
        print(self.name + '是中国人')

person = Chinese()   # 创建Chinese的实例person
person.say()         # 调用实例方法
--------------------------------------------------------
class Chinese:

    def greeting(self):
        print('很高兴遇见你')

    def say(self):
        self.greeting() 
        print('我来自中国')

person = Chinese()
# 创建实例person
person.say()
# 调用say()方法
------------------------------------------------------------
#初始化方法,也叫魔术方法   阅读代码后直接运行    
class Chinese:

    def __init__(self): 
        print('很高兴遇见你,我是初始化方法')

person = Chinese()
------------------------------------------------------------
class Chinese:
    def __init__ (self):
        self.mouth = 1  # self.不能丢
        self.eye = 2
    
    def body(self):
        print('我有%s张嘴巴' % self.mouth)
        print('我有%s只眼睛' % self.eye)

person = Chinese()
person.body()
------------------------------------------------------------------
class Chinese:

    def __init__(self, name, birth, region):
        self.name = name   # self.name = '球球' 
        self.birth = birth  # self.birth = '广东'
        self.region = region  # self.region = '深圳'

    def born(self):
        print(self.name + '出生在' + self.birth)

    def live(self):
        print(self.name + '居住在' + self.region)    

person = Chinese('球球','广东','深圳') # 传入初始化方法的参数
person.born()
person.live()
--------------------------------------------------------------------------------
class Chinese:

    def born(self, name, birthplace):
        print(name + '出生在' + birthplace)

    def live(self, name, region):
        print(name + '居住在' + region)

person = Chinese()
person.born('球球','广东')
person.live('球球','深圳')
-------------------------------------------------------------------------------
class Chinese:
    def __init__(self,hometown):
        self.hometown=hometown
        print('你在哪里出生?')

    
    def born(self):
        print('我出生在%s。' % self.hometown)

qiuqiu = Chinese('广东')# 传给参数hometown
qiuqiu.born()
--------------------------------------------------------------------------



class MyClass():

    pass

# print(MyClass)
# mc就是通过MyClass创建的对象。mc是MyClass的实例
# mc mc_2 mc_3 mc_4 都是MyClass的实例 他们都是一类对象
mc = MyClass()
mc_2 = MyClass()
# mc_3 = MyClass()
# mc_4 = MyClass()
# # 我们可以通过isinstance() 来检查一个对象是否是另一个类的实例
# r = isinstance(int,MyClass)
#
# print(r)

# print(mc,type(mc))
# 类也是一个对象 用来创建对象的对象
# 类是type类型的对象 定义类实际上就是定义了一个type类型的对象
# print(id(MyClass),type(MyClass))

# 我们可以像对象中添加变量,对象中添加变量我们称之为属性
# 语法:对象.属性名 = 属性值

mc.name = '蜘蛛侠'
mc_2.name = '钢铁侠'
print(mc_2.name)







4. 参数self

4.1 属性和⽅法

类中定义的属性和⽅法都是公共的,任何该类实例都可以访问
属性和⽅法的查找流程
当我们调⽤⼀个对象的属性时,解析器会现在当前的对象中寻找是否还有 该属性,如果有,则直接返回当前的对象的属性值。如果没有,则去当前 对象的类对象中去寻找,如果有则返回类对象的属性值。如果没有就报错
类对象和实例对象中都可以保存属性(⽅法)
如果这个属性(⽅法)是所以的实例共享的,则应该将其保存到类对象中
如果这个属性(⽅法)是摸个实例独有的。则应该保存到实例对象中
⼀般情况下,属性保存到实例对象中 ⽽⽅法需要保存到类对象中

4.2 self

self在定义时需要定义,但是在调⽤时会⾃动传⼊。
self的名字并不是规定死的,但是最好还是按照约定是⽤self
self总是指调⽤时的类的实例

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值