Python 的类

看Django源代码,类的继承搞不太懂,所以先学习学习。

 1 # -*- coding:utf-8 -*-
 2
 3 class SchoolMember:
 4     def __init__(self,name,age):
 5         self.name = name
 6         self.age = age
 7         print ‘init SchoolMember: ‘, self.name, self.age
 8
 9     def tell(self):
10         print ‘name:%s; age:%s‘ % (self.name, self.age)
11
12
13 class Teacher(SchoolMember):
14     def __init__(self,name,age,salary):
15         # 继承 schoolmember类,name ,age 属性???? 这到底是继承还是重写呢?
16         # 首先,继承了父类,先会在父类的初始化,然后继承过来
17         SchoolMember.__init__(self,name,age)
18         self.salary = salary
19         print ‘init Teacher: ‘, self.name
20
21     def tell(self):
22         SchoolMember.tell(self)     # 调用父类的方法
23         print ‘salary: ‘, self.salary
24
25
26 class Student(SchoolMember):
27     def __init__(self,name,age,marks):
28         # 也是继承那个
29         SchoolMember.__init__(self,name,age)
30         self.marks = marks
31         print ‘init Student: ‘, self.name
32
33     def tell(self):
34         SchoolMember.tell(self)
35         print ‘marks: ‘, self.marks
36
37
38 if __name__ == "__main__":
39     t = Teacher(‘yanggang‘, 20, 1000)
40     s = Student(‘liming‘, 12, 86)
41 #    members = [t,s]
42 #    print
43 #    for member in members:
44 #      member.tell()

(1)继承父类之后,用子类的实例,会先走父类,

SchoolMember.__init__(self,name,age) 

总结

时间: 2024-09-12 12:00:48

Python 的类的相关文章

[Python]剖析类的机理

Python是如何创建类的? 当python的解释器碰到类的定义的时候,它会像对待其他code一样先读取其内容,然后为这个class创建一个新的namespace并且执行其代码.类的定义通常包括变量,方法以及其他类.这些内容都在新的命名空间里面.从类的内容读到到类的对象的产生是通过内置type函数来实现,所以type函数也提供可动态创建类的可能. 用type函数动态创建类的时候,type这个构造函数需要三个参数,分别是类名,基类以及其属性. type实际上是一个元类,所谓的元类就是可以创建其他类

python Class(类) and Object Oriented(面向)

Python类与面向对象    程序=指令+数据 (或算法+数据结构).代码可以选择以指令为核心或以数据为核心进行编写.    两种范型        (1)以指令为核心:围绕"正在发生什么"进行编写(面向过程编程:程序具有一系列线性步骤:主体思想是代码作用于数据)以指令为中心,程序员的主要工作在于设计算法.        (2)以数据为核心:围绕"将影响谁"进行编写(面向对象编程<oop>:围绕数据及为数据严格定义的接口来组织程序,用数据控制对代码的访

Python 的类的下划线命名有什么不同?

1,以一个下划线开头的命名 ,如_getFile2,以两个下划线开头的命名 ,如__filename3,以两个下划线开头和结尾的命名,如 __init__()4,其它这些命名有什么不同吗 首先是单下划线开头,这个被常用于模块中,在一个模块中以单下划线开头的变量和函数被默认当作内部函数,如果使用 from a_module import * 导入时,这部分变量和函数不会被导入.不过值得注意的是,如果使用 import a_module 这样导入模块,仍然可以用 a_module._some_var

Python新式类和经典类的区别

@Python新式类和经典类的区别 class ClassicClass(): pass class NewStyleClass(object): pass x1 = ClassicClass() x2 = NewStyleClass() print x1.__class__, type(x1) print x2.__class__, type(x2) 输出结果: __main__.ClassicClass <type 'instance'> <class '__main__.NewSt

谨慎修改Python的类属性

Python的类和类实例都是可变对象,可以随时给属性赋值,并且在原处修改. 在对类属性进行修改时需要特别小心,因为所有的类实例都继承共享类属性,除非实例本身存在和类属性同名的属性.对类属性进行修改,会影响到所有由这个类生成的实例. class CA(object): cls_pre = 'aaaaa' def __init__(self): self.obj_pre = 'bbbbb' a = CA() b = CA() print(a.cls_pre, a.obj_pre) print(b.c

python元类分析

刚开始接触到Python新式类中的元类的概念的时候很是纠结了下..不知道这是个啥东西... 用以下几个定义来说明吧: (1)Python中,类也是对象..只不过这种对象比较的特殊,他用于创建别的对象 (2)元类也是一种类,只不过它更特殊...他是用来创建别的类的类...(呵呵,是不是很拗口) 先来看一段代码吧: class Fjs(object): def __init__(self, name): self.name = name def hello(self): print "hello b

python 定制类

看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的. __slots__我们已经知道怎么用了,__len__()方法我们也知道是为了能让class作用于len()函数. 除此之外,Python的class中还有许多这样有特殊用途的函数,可以帮助我们定制类. __str__ 我们先定义一个Student类,打印一个实例: >>> class Student(object): ... def __init__(self, name):

Python的类与类型

1.经典类与新式类 在了解Python的类与类型前,需要对Python的经典类(classic classes)与新式类(new-style classes)有个简单的概念. 在Python 2.x及以前的版本中,由任意内置类型派生出的类(只要一个内置类型位于类树的某个位置),都属于“新式类”,都会获得所有“新式类”的特性:反之,即不由任意内置类型派生出的类,则称之为“经典类”. “新式类”和“经典类”的区分在Python 3.x之后就已经不存在,在Python 3.x之后的版本,因为所有的类都

Python -- str 类

Python str类常用方法: class str(object): def capitalize(self):   # 全部字母变小写只有首字母变大写: >>> test = 'PYTHON' >>> test.capitalize() 'Python' def casefold(self): # 全部字母变小写: >>> test = 'PYTHON' >>> test.casefold() 'python' def cente

Python -- list 类

Python list类常用方法 class list(object): def append(self, p_object): # 向列表中添加元素: >>> name_list ['shuoming', 'python', 'search'] >>> name_list.append("python") >>> name_list ['shuoming', 'python', 'search', 'python'] def cl