年轻人,你渴望力量吗?
你渴望拥有对象吗?
让我们面向对象
重建“家园”吧!
#对象
def fn():
a = 1
return '奥利给'
print(fn,id(fn),type(fn))
print(fn(),id(fn()),type(fn()))
当我们对对象有了更基础的认识后,接下来的面向对象就很好理解了。在说面向对象之前我们先 举个栗子:
买冰棍 |
---|
1.穿鞋 |
2.下楼 |
3.到超市 |
4.选冰棍 |
5.买冰棍 |
ps:关于这三大特点,我们会在后面的文章进行展开。
- 面向过程(Procedure Oriented)是一种以过程为中心的编程思想。
大家可能会问,为什么要引入面向过程呀 ,因为,没有对比就没有伤害,哈哈哈嗝。其是就是通过对不同编程思想的比较,进一步加深我们对面向对象的理解,而且还能拓展知识面(面向过程)。是不是真香!
⾯向对象的编程⽅式⽐较容易阅读,并且易于维护,容易复⽤。但是编写的过程中不太符合常规的思维,编写相对麻烦。
面向过程的编程思想往往适⽤于单个功能,代码复⽤性⽐较低。如果要实现别的功能,需要更换大量代码,费事,耗时。但是通俗易懂。
之前博客介绍的都是Python的内置对象(列表(list())、字符串(str())、元组(tuple())、字典(dict())等),但是有的时候内置对象并不都能满⾜我们的需求,所以我们在开发中经常要⾃定义⼀些对象,那么也就引申出了 类 。
类(Class): 用来描述具有相同属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
#类
a = 123
b = '奥利给'
print(a,type(a))
a = int(123) #创建了一个int型的实例
b = str('奥利给') #创建了一个str型的实例
print(b,type(b))
class 类名([父类]):
代码块
举个栗子:
class MyClass():
pass #Python中 pass 是空语句(占位语句),加入是为了保持程序结构的完整性。
class myclass():
pass
print(myclass)
class myclass():
pass
print(myclass)
m1 = myclass() #m1是通过myclass创建的,所以m1是myclass的实例
print(m1,type(m1))
#isinstance(),用来检查其中的对象是否是该类的实例
a = isinstance(m1,myclass)
print(a)
#定义对象
class myclass():
pass
print(id(myclass),type(myclass))
在类的代码块中,我们可以定义变量和函数
变量会成为该类实例的公共属性,所有的该实例都可以通过 对象.属性名的形式访问
函数会成为该类实例的公共⽅法,所有该类实例都可以通过 对象.⽅法名的形式访问
class myclass():
pass
print(id(myclass),type(myclass))
m1 = myclass()
m1.name = '奥利给' #对象m1,属性名name,属性值‘奥利给’
print(m1.name)
在类中的代码块,我们可以定义变量和函数
在类中定义的变量,将会成为所有实例的公共属性。
举个栗子:
#定义一个手机
class Mobile():
a = '华为'
b = 123
p1 = Mobile()
p2 = Mobile()
print(p1,p2)
print(p1.a,p2.b)
#定义一个人
class Person():
name = '和尚'
def Speak(): #创建了一个方法Speak
print('奥利给!!!')
p1 = Person()
p2 = Person()
p1.Speak()
注意:笔者使用的是python 3.7 的版本。随着python的不断迭代,在创建方法时,会默认自动传递 self 参数,而之前的版本,可能并不能自动传参。
补充:有的小伙伴可能会好奇,我们在创建类的时候,在阅读别人的代码时有的会加小括号 () ,有的则没有加。
#创建类带括号
class Person:
pass
class Person1():
pass
举个栗子:
#属性(方法)的查找流程
class Mobile():
a = 123
b = '奥利给'
p1 = Mobile()
p2 = Mobile()
p1.a = 234
print(p1.a,p2.b)
print(p2.c)
#在类对象中创建的方法
class Person():
name = '李云龙'
def Speak(n):
print(n)
n1 = Person()
n2 = Person()
n1.name = '张三'
n2.name = '李四'
n1.Speak()
n2.Speak()
print(n1)
#self参数
class Person():
name = '李云龙'
def Speak(self):
print('%s的意大利炮'%self.name)
print('{}的意大利炮'.format(self.name))
n1 = Person()
n2 = Person()
n1.name = '张三'
n2.name = '李四'
n1.Speak()
n2.Speak()
写到这,这篇博客基本完结,如果想起了什么,我还会继续补充。
笔者感言:其实越往后深入,你会发现,前面的知识用的越来越多,你也就越来越熟练,记忆也越来越深。纸上得来终觉浅,绝知此事要躬行。
本文地址:https://blog.csdn.net/weixin_45095678/article/details/107073246
如对本文有疑问, 点击进行留言回复!!
【状压dp】[HDU1400 & poj2411] Mondriaan‘s Dream
网友评论