python - 面向对象 类的概念

java c++ python(都是面向对象的语言, c是面向过程的语言)
面向过程:1—>2
—>3—>4 怎么做
面向对象:4 谁来做
相对于函数来说是一个更大的封装,根据职责将对象所能实现的功能封装到一起
1.确定对象要做的事情(方法->多个)
2.让对象调用方法

植物大战僵尸
对象:向日葵   豌豆射手      僵尸
属性:生命值    生命值       生命值
方法:生产阳光()  发射子弹()  移动()
     摇摇晃晃()             咬()

类:是一群具有相同特征和行为事物的一个统称(抽象的–>不能直接使用)
特征:被称为属性
行为:被称为方法

对象:由类创建出来的一个具体的存在,由哪一个类创建出来的
对象,就拥有哪一个类中定义的方法和属性

先有类–>再有对象

类和对象的关系:
类是模板,对象是根据这个模板创建出来的,先有类再有对象
类只需要有一个,对象可以有很多个
不同对象(由同一类创建出来的对象)之间的属性可以不相同
类中定义了什么属性和方法,使用这个类创建出来的对象就有什么
属性和方法,不可能多也不可能少

类的设计
    1.类名:这类事物的名字(大驼峰命名法)
        大驼峰命名法
            1.每一个单词的首字母大写
            2.单词与单词之间没有下划线
    2.属性:这个类创建出来的对象有什么样的特征
    3.方法:这个类创建出来的对象有什么样的行为

类名的确定
名词提炼法分析整个业务流程,出现的名词,通常就是找到的类

属性和方法的确定
对 对象的特征描述,通常可以定义成属性
对象具有的行为(动词),通常可以定义为方法
提示:需求中没有涉及的属性或方法在设计类时,不需要考虑

类、属性、方法为了加以区分,举几个简单的例子:
练习1:
需求:
小明今年18岁,身高1.75,每天早上要跑步,小明吃东西
小美今年17岁,身高1.65 小美不跑步,小美吃东西

类:Person
属性:name age height
方法:run()
     eat()

练习2:
一只黄颜色的狗狗叫大黄
看见生人旺旺叫
看见家人摇尾巴

类:Dog
属性:color
     name

方法:shake shout

分清了类、属性、方法后运用到具体编程里:
题目:猫爱吃鱼,猫要喝水

# 哪一个对象调用的方法,self就是哪一个对象的引用(面试常考)
# 在类封装方法的内部,self就表示当前调用方法的对象自己
# 在的方法内部 可以通过 self.属性 来访问对象的属性

class Cat:
    def eat(self):
        print('猫爱吃鱼')
    def drink(self):
        print('猫要喝水')

tom = Cat()
print(tom)
tom.eat()
tom.drink()

输出:

<__main__.Cat object at 0x7f7231eef588>
猫爱吃鱼
猫要喝水

class Cat:
    def eat(self):
        print('%s 爱吃鱼' %(self.name))
    def drink(self):
    	print('猫要喝水')

# 创建猫对象
tom = Cat()
# 在类的外部 对象.属性 可以给对象添加属性
# 不推荐使用
# 对象包含哪些方法,应该封装在类中
tom.name = 'Tom'
print(tom)
addr = id(tom)
print(addr)
# %x:打印格式为十六进制
print('%x' %(addr))
# %d:打印格式为十进制
print('%d' %(addr))
tom.eat()
tom.drink()

输出:

<__main__.Cat object at 0x7fb8de2c35f8>
140431978149368
7fb8de2c35f8
140431978149368
Tom 爱吃鱼
猫要喝水

# 可以再创建一个猫对象
lazy_cat = Cat()
lazy_cat.name = 'miaomiao'
print(lazy_cat)
lazy_cat.eat()
lazy_cat.drink()

lazy_cat2 =lazy_cat
print(lazy_cat2)

输出:

<__main__.Cat object at 0x7fb8de2c3668>
miaomiao 爱吃鱼
猫要喝水
<__main__.Cat object at 0x7fb8de2c3668>

猜你喜欢

转载自blog.csdn.net/weixin_43067754/article/details/85269187