python关于对象和类的浅谈

Python 类/对象

Python 是一种面向对象的编程语言。

Python 中的几乎所有东西都是对象,拥有属性和方法。

类(Class)类似对象构造函数,或者是用于创建对象的“蓝图”。
(你要知道以下的一些常识,便于去理解别人的代码和思路)

类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。

方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(,Dog是一个Animal)。

对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法

关于类和对象的区别,我是这样理解的,举一个浅显的例子。dog(狗)是对地球上的一种生物包括林逸风,傅汉鬙,旺财,来福,等的抽象说明(就像一种统称)。
林逸风,傅汉鬙,旺财等等都属于“狗”这一类所包含的个体。
对象的话,简单一点说,对象是类的具体的个体。比如,傅汉鬙是类dog的一个对象。dog可能存在无数个对象(就好像地球上存在许多品种的狗一样)。(对单个个体的说明)总之你可以理解成对象是包括在类里面就行了。(再简单的话就是同一个类一定比同一个对象要多几行)

创建 类
如需创建类,一般使用 class 关键字:

使用名为 x 的属性,创建一个名为 Mydog的类:

class Mydog:
x=7
print(Mydog)(类中一定要有内容,不然就报错)
结果为<class ‘main.Mydog’>
在这个基础上就可以做对象了

创建对象

class Mydog:
x = 6
p1 = MyClass()
print(p1.x)
结果为 6
事实上并不会使用这种类似的方法,因为这是最简单的类,没有什么实际作用,一般是如下
这时需要使用__init__() 函数
所有类都有一个名为 init() 的函数,它始终在启动类时执行。

使用 init() 函数将值赋给对象属性,或者在创建对象时需要执行的其他操作:

class son:
def init(self, name, age) (不用self的话,可以运行。但是会叫错。)
self.name = name
self.age = age

p1 = son(“黄顺斌”, 63)
print(p1.name)
print(p1.age)
结果为 黄顺斌 (在这里 self 参数是对类的当前实例的引用,用于访问属于该类的变量。用其他的也是可以的)
63

(修改和增添的方法类似字典内的修改, 有需要的可以看看我之前的内容。)

类的继承
面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制。(继承父类。可以让相同的东西少写)
通过继承创建的新类称为子类或派生类,被继承的类称为基类、父类或超类。(你可以理解成你从别人那里继承了财富之类的)
一般来说就是son继承father,或者dog继承animal之类的,不能people继承dog
注意所谓的继承是在子类不重写 __init__的情况下,实例化子类时,才会自动调用父类定义的 init(否则不继承)

class Father(object):
def init(self, name):
self.name=name
print ( “name: %s” %( self.name) )
def getName(self):
return 'Father ’ + self.name

class Son(Father): (对格式有严格要求)
def getName(self):
return 'Son '+self.name

if name==‘main’:
son=Son(‘runoob’)
print ( son.getName() )
结果为
name: runoob(这个是继承父类的)
Son runoob

如果重写了__init__ 时,要继承父类的构造方法,可以使用 super 关键字
格式为 super(子类,self).init(参数1,参数2,…)
例子
class Father(object):
def init(self, name):
self.name=name
print ( “name: %s” %( self.name))
def getName(self):
return 'Father ’ + self.name

class Son(Father):
def init(self, name):
super(Son, self).init(name) (在这里它继承了上面的 name)
print (“hi”)
self.name = name
def getName(self):
return 'Son '+self.name

if name==‘main’:(这句是用去定义son的name)
son=Son(‘runoob’)
print ( son.getName()
结果为
name: runoob
hi
Son runoob
总之继承是一个偷懒的过程吧,我是这么理解的,减少相同重复的代码
(祝各位看官老爷头发少掉,bug没有)

原创文章 7 获赞 10 访问量 461

猜你喜欢

转载自blog.csdn.net/alongwaywith/article/details/105793335