(1)模块是包含函数和变量的Python文件
(2)可以导入这个文件
(3)然后可以使用,操作符访问模块中的函数和变量
对于模块来说,键是函数或者变量的名称,而语法是“.键”。
class函数中self就是用于存储对象属性的集合,就算没有属性self也是必备的,如果不加self,chess=‘Frank’这样的代码意义就不明确了,它指的即可能是实例的chess属性,也肯是一个叫chess的实例变量。有了self.chess = 'Frank'就清楚的知道这是实例的属性self.chess。示例代码:
1. class Box:
2. def __init__(self, boxname, size, color):
3. self.boxname = boxname
4. self.size = size
5. self.color = color # self就是用于存储对象属性的集合,就算没有属性self也是必备的
6.
7. def open(self, myself):
8. print('-->用自己的myself,打开那个%s,%s的%s' % (myself.color, myself.size, myself.boxname))
9. print('-->用类自己的self,打开那个%s,%s的%s' % (myself.color, myself.size, myself.boxname))
10.
11. def close(self):
12. print('-->关闭%s,谢谢' % self.boxname)
13.
14.
15. b = Box('魔盒', '14m', '红色')
16. b.close()
17. b.open(b) # 本来就会自动传一个self,现在传入b,就会让open多得到一个实例对象本身,print看看是什么。
18. print(b.__dict__) # 这里返回的就是self本身,self存储属性,没有动作。
类的实例化(方法就是像调用函数一样地调用一个类):
Thing = Mystuff()
Thing.apple()
详细解释:
1.首先看到了MyStuff()便知道了他是你定义过的一个类。
2.Python创建了一个空对象,里边包含了你在该类中用def创建的所有函数
3.Python回去检查你是不是在里边创建了一个_init_函数,如果有创建,他就会调用这个函数,从而对你新创建的空对象实现了初始化。
4.在MyStuff的_init_函数里,有一个多余的函数叫做self,这就是Python为我们创建的空对象,而我们可以对他进行类似模块字典等的操作,为它设置一些变量进去
5.self.tangerine设置值
6.最后Python将这个新建的对象赋给一个叫thing的变量。
第一个关于类的代码:
1. import os
2.
3. #第一个关于类的例子
4. class Song(object):
5. def __init__(self,lyrics):
6. self.lyrics = lyrics
7.
8. def sing_me_a_song(self):
9. for line in self.lyrics:
10. print (line)
11.
12. happy_bday = Song(["Happy birthday to you",
13. "I don't want to get sued",
14. "So I'll stop right there"])
15.
16. bulls_on_parade = Song(["They rally around the family",
17. "With pockets full of shells"])
18.
19. happy_bday.sing_me_a_song()
20.
21. bulls_on_parade.sing_me_a_song()
22. os.system("pause")
词汇练习:
1> class X(Y) :创建一个叫X的类,它是Y的一种。
2> class X(object) :def _init_(self,J) :类X有一个_init_接收self和J作为参数。
3> class X(object) :def M(self,J) :类X有一个函数名称为M,他接收self 和 J作为参数
4> foo = X(): 将foo设为类X的一个实例。
5> foo.M(J):从foo中找到M函数,并使用self和J参数来调用它
6 > foo.K = Q:从foo中获取K属性,并将其设为Q。
1》继承就是用来指明一个类的大部分或者全部功能都是从一个父类中获得的。
class Foo(Bar):意思是创建一个叫Foo的类,并让他继承Bar
父类和子类有三种交互方式:
(1)子类上的动作完全等同于父类上的
(2)子类上的动作完全覆盖了父类上的动作
(3) 子类上的动作部分替换了父类上的动作
继承三种方式:
- def __init__(self):
- self.other = Other()
- def implicit(self):
- self.other.implicit()
- def override(self):
- self.other.override()
- def altered(self):
- print ("CHILD,BEFORE OTHER altered()")
- self.other.altered()
- print ("CHILD,AFTER OTHER altered()")
- son = Child()
- son.implicit()
- son.override()
- son.altered()
- class Child(object):
- def override(self):
- print ("OTHER override")
- def implicit(self):
- print ("OTHER implicit")
- def altered(self):
- print("OTHER altered")
- class Other(object):
- #####组合
- 组合代码:
- def override(self):
- print ("CHILD override()")
- def altered(self):
- print ("CHILD ,BEFORE PARENT altered()")
- super(Child,self).altered()
- print ("CHILD ,AFTER PARENT altered()")
- dad = Parent()
- son = Child()
- dad.implicit()
- son.implicit()
- dad.override()
- son.override()
- dad.altered()
- son.altered()
- os.system("pause")
- class Child(Parent):
- def override(self):
- print ("PARENT override()")
- def implicit(self):
- print ("PARENT implicit()")
- def altered(self):
- print("PARENT altered()")
- class Parent(object):
- #三种方法结合
- def altered(self):
- print ("CHILD,before PARENT altered()")
- super(Child,self).altered() ##用Child和self两个参数来调用super
- print ("CHILD,after PARENT altered()")
- dad = Parent()
- son = Child()
- dad.altered()
- son.altered()
- class Child(Parent):
- def altered(self):
- print ("PARENT altered()")
- class Parent(object):
- # #在运行前或者运行后替换
- def override(self):
- print ("CHILD override()")
- dad = Parent()
- son = Child()
- dad.override()
- son.override()
- class Child(Parent):
- def override(self):
- print("PARENT override()")
- class Parent(object):
- # #显式覆盖
- pass
- dad = Parent()
- son = Child()
- dad.implicit()
- son.implicit()
- class Child(Parent):
- def implicit(self):
- print ("PARENT implicit()")
- class Parent(object):
- python中的pass语句就是c或java中的空语句