Python基础入门笔记:理解类
理解类
5.1类简介
定义类:
class CocaCola:
formula = ['caffeine','sugar','water','soda']
复制代码
使用
class TestA:
attr = 1
obj_a = TestA()
obj_b = TestA()
obj_a.attr = 42
print(obj_b.attr)
>>> 结果:1
复制代码
类来定义一个类,只需def
就像定义一个函数一样简单。如上所示,可以看到定义了名为CocaCola的类,然后在缩进的地方有一个公式
,其中包含变量列表。类中定义的变量就是类的变量,类的变量变量有一个专门的术语,我们称之为类的属性。
类的属性:
- 类变量
- 方法
①类的实例化:
coke_for_me = CocaCola()
coke_for_you = CocaCola()
复制代码
②对类变量的引用②对类变量的引用,可乐给我。使用公式
类方法:
class CocaCola:
formula = ['caffeine','sugar','water','soda']
def drink(self):
print('Energy!')
coke = CocaCola()
coke.drink()
复制代码
结果:
Energy!
复制代码
5.2 self
我想很多人都会注意到这个奇怪的地方—— 结果: 我们有一些线索怎么样!该参数实际上是创建的实例本身。也就是说,对象作为参数插入到函数括号中。此外,一旦实例化了一个类,我们实际上可以像使用函数一样使用它: 实例化的对象将被编译。构造函数作为第一个参数默默地传递到以下方法的括号内。上面两种方法是一样的,但是我们大多会按照前面的形式来写。其实参数名 就像函数一样,类方法也可以有自己的参数,如下: 结果: Python 类中有一些方法,称为“魔法方法”。 它的作用:它在创建实例之前做了很多事情。说白了,就是说即使你在创建实例时不引用 如果有过面向对象编程的经验,就很容易理解,也就是很多面向对象语言中的“构造函数”。 如下代码: 表示decaf继承了CocaCola类。 类的变量和方法可以被子类继承,但如果需要特殊更改,也可以重写。 Q1:如果重新分配类属性,是否会影响对该类属性的引用? A1:会影响。 Q2:如果实例属性重新赋值,是否会影响对类属性的引用? A2:无影响。 Q.3:类属性实例属性同名,那么后面的 A3:分配类属性后的值。 总结:如图所示,Python中属性的引用机制是从外到内的。创建实例并准备开始引用属性后,编译器将首先检查实例是否具有该属性。如果是,则参考;如果没有,它将搜索该实例所属的类是否具有该属性。如果有的话,参考一下。如果没有,它只会报告错误。 self似乎不属于任何参数♝。我们来解释一下原理。其实很简单。让我们更改上面的代码:
class CocaCola:
formula = ['caffeine','sugar','water','soda']
def drink(coke): # 把self改为coke
print('Energy!')
coke = CocaCola()
coke.drink()
复制代码
Energy!
复制代码
coke = CocaCola
coke.drink() == CocaCola.drink(coke) #左右两边的写法完全一致
复制代码
self
可以随意更改(编译器不会因此而报错)。 class CocaCola:
formula = ['caffeine','sugar','water','soda']
def drink(self,how_much):
if how_much == 'a sip':
print('Cool~')
elif how_much == 'whole bottle’:
print('Headache!')
ice_coke = CocaCola()
ice_coke.drink('a sip')
复制代码
Cool~
复制代码
5.3 魔法方法
_init_()
就是其中之一。 class CocaCola():
formula = ['caffeine','sugar','water','soda']
def __init__(self):
self.local_logo = '可口可乐'
def drink(self):
print('Energy!')
coke = CocaCola()
print(coke.local_logo)
复制代码
init_()
方法,里面的语句也会自动先执行。这为类的使用提供了极大的灵活性。 class CocaCola:
formula = ['caffeine','sugar','water','soda']
def __init__(self,logo_name):
self.local_logo = logo_name
def drink(self):
print('Energy!')
coke = CocaCola('ݢݗݢԔ')
coke.local_logo
>>> 可口可乐
复制代码
5.4 类继承
class CaffeineFree(CocaCola):
caffeine = 0
ingredients = [
'High Fructose Corn Syrup',
'Carbonated Water',
'Phosphoric Acid',
'Natural Flavors',
'Caramel Color',
]
coke_a = CaffeineFree('Cocacola-FREE')
coke_a.drink()
复制代码
class TestA():
attr = 1
obj_a = TestA()
TestA.attr = 24
print(obj_a.attr)
>>> 结果:24
复制代码
class TestA:
attr = 1
obj_a = TestA()
obj_b = TestA()
obj_a.attr = 42
print(obj_b.attr)
>>> 结果:1
复制代码
.
指的是什么呢? class TestA():
attr =1
def __init__(self):
self.attr = 24
obj_a = TestA()
print(obj_a.attr)
>>> 结果:24
复制代码
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。