码迷,mamicode.com
首页 > 编程语言 > 详细

Python笔记(九)

时间:2018-03-19 18:10:16      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:关于   prot   protected   通过   attr   不可   ict   python面向对   使用   

 1 #encoding=utf-8
 2 
 3 # python高级编程
 4 
 5     # python面向对象
 6         # 创建类
 7 
 8 # 无意中把Visual Studio Code的窗口调小了,查了一下,可以使用Ctrl+=放大窗口,使用Ctrl+-缩小窗口
 9 
10 
11 
12 class Person:                                   # 这里类的申明用class
13     The baseclass of Human                    # 文档字符串,相当于类的描述
14     ins_count=0                                 # 这里申明的是类变量,在所有实例化对象中是公用的,类似于我们所说的静态变量  
15   
16     def __init__(self,name,age,sex):            # 这里方法的申明用def,__init__()表示初始化构造函数,注意这里的init都是双下划线
17         self.name=name                          # 类变量的申明,类似与我们的属性,只在当前的实例化对象中访问
18         self.age=age                            
19         self.sex=sex
20         self.ins_count+=1
21 
22     def logInfo(self):                          # 方法的定义,这种定义使用类似于Person.logInfo()这种方式调用是错误的     
23         if(self.sex==1):                        # self代表类的实例,在定义类的方法时是必须的,但在调用时不必传入相应的参数
24             print His name is,self.name,,age is,self.age
25         else:
26             print Her name is,self.name,,age is,self.age    # 通过符号“.”来实现对属性的访问
27         print self.ins_count
28     
29     def logAge(self):                           # 普通方法
30         print Age is,self.age
31 
32     @staticmethod
33     def printClassName():                       # 静态方法 无法访问类和实例属性
34         print Person
35 
36     @classmethod
37     def printAttr(cls):                         # 类方法 可以访问类属性 无法访问实例属性
38         print cls.ins_count
39     
40     def __del__(self):
41         print drop
42 
43 p=Person(hanmeimei,13,0)                      # 使用Person()的形式来创建类的实例,不需要像其他面向对象语言那样使用new来实例化
44 Person.printClassName()
45 p.logInfo()
46 
47 
48 print(getattr(p,name))
49 
50 Python类的内置属性:__dict__,类的属性(包含一个字典由类的属性数据组成)
51 print Person.__dict__ # 输出类的数据属性
52 print Person.__name__ # 输出类名
53 print Person.__module__ # 输出类所在的模块
54 print Person.__doc__ # 输出类的文档字符串
55 print Person.__bases__ # 输出类的所有父级的组成元组
56 
57 #del p # 当对象被创建时,就创建了一个引用,当这个对象不需要时,解释器会在适当的时机将垃圾对象占用的内存空间回收,可以定义__del__函数在对象销毁时调用
58 
59 class Student(Person):                          # 左侧即是类的继承的写法,使用 class child(parent)
60     __serialNo=10086                            # 申明私有变量,在外部不可访问
61     def logAge(self):                           # 如果父类的方法不能满足需求时,可以在子类中重写父类的方法
62         if(self.sex==1):                       
63             print His age is,self.age
64         else:
65             print Her age is,self.age         
66 
67     def __addserialNo(self):                    # 定义私有方法,外部不能访问
68         self.__serialNo+=1
69 
70 # 关于下划线的说明,像__foo()__这种头尾双下划线的表示特殊方法,一般表示系统定义的名字,如__init()__之类,_foo()单下划线开头这种则表示的是protected级别,__foo()双下划线开头表示private级别
71 
72 
73 s=Student(lilei,15,1)
74 s.logInfo()
75 s.logAge()
76 
77 # 熟悉面向对象的同志们可能发现这里没有重载,作者表示是的,我就是没有,跟我的理念不相符,……

Python笔记(九)

标签:关于   prot   protected   通过   attr   不可   ict   python面向对   使用   

原文地址:https://www.cnblogs.com/krockey/p/8603663.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!