Python进阶学习之面向对象

目录

  • 面向对象

    • 私有属性

面向对象

? python也有面向对象的编程,它与C++中的类有点相似。它也只是运算符重载,继承。

class Test:
   num=0
   def __init__(self):
      # self.num=9 #print结果是9
      Test.num=10  #print结果是10
t=Test()
print(t.num)

但是在python中类中的变量全是共有的,可以通过Test.num来进行访问;在类中,初始化的构造函数并不是以Test()[Test()方法是C++中的构造函数]这种方式来声明,而是以__init__()函数来声明。构造函数中self代表的是累的实例,并非是类,类的方法与普通函数只有一个特殊的区别,就是在类中的方法必须要有第一个参数名称,按照惯例,他的名称是self。

class Employee:  #所有员工的基类
   empCount = 0

   def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      Employee.empCount += 1

   def displayCount(self):
      print("Total Employee %d" % Employee.empCount)

   def displayEmployee(self):
      print("Name : ", self.name, ", Salary: ", self.salary)

emp1 = Employee("Zara", 2000)  #创建 Employee 类的第一个对象
emp2 = Employee("Manni", 5000)#创建 Employee 类的第二个对象
emp1.displayEmployee()
emp2.displayEmployee()
print("Total Employee %d" % Employee.empCount)
Name :  Zara , Salary:  2000
Name :  Manni , Salary:  5000
Total Employee 2

上述代码的输出中,大家可能对于“Total Employee 2”比较有疑惑,这是因为empCount是类属性,而不是对象属性。类属性就是类对象所拥有的属性,它被所有类对象的实例对象所共有,在内存中只存在一个副本,这个和C++、Java中类的静态成员变量有点类似。对于公有的类属性,在类外可以通过类对象和实例对象访问。上述代码中的name和salary都是实例属性,每一个对象都会拥有一个自己的name和salary,而且实例属性也可以只在在类外通过“实例对象.实例属性"来进行自定义设置,但是这种一般不建议,为了更好的封装性,还是建议将所有的实例属性放置在类中。

私有属性

class JustCounter:
   __secretCount = 0  # 私有变量
   publicCount = 0  # 公开变量

   def count(self):
      self.__secretCount += 1
      self.publicCount += 1
      print(self.__secretCount)

counter = JustCounter()
counter.count()
counter.count()
print(counter.publicCount)
# print(counter.__secretCount)#错误,实例不能访问私有变量
print(counter._JustCounter__secretCount)
 #可以使用 object._className__attrName访问属性

私有属性是不可以在类外进行访问的,若需访问,则需要通过代码中的方法进行访问。

原文地址:https://www.cnblogs.com/SmallBlackEgg/p/11631712.html

时间: 2024-10-10 14:48:13

Python进阶学习之面向对象的相关文章

Python进阶(十六)----面向对象之~封装,多态,鸭子模型,super原理(单继承原理,多继承原理)

Python进阶(十六)----面向对象之~封装,多态,鸭子模型,super原理(单继承原理,多继承原理) 一丶封装 , 多态 封装: ? ? ? ? ? ?将一些东西封装到一个地方,你还可以取出来 ? ? ? ? ? ?类设置静态属性, 设置一些方法 或者 对象, 对象可以在其对象封装一些属性 多态: ? ? ? ? ? ?python默认支持多态, 多态指的是一种事务具有多种形态 ? ? ? ? ? ?1.多态可以增加代码的灵活度: ? ? ? ? ? ?2.以继承和重写父类方法为前提: ?

Python 标准库一览(Python进阶学习)

转自:http://blog.csdn.net/jurbo/article/details/52334345 写这个的起因是,还是因为在做Python challenge的时候,有的时候想解决问题,连应该用哪个类库都不知道,还要去百度(我不信就我一个人那么尴尬TvT) 好像自从学习了基础的Python 语法,看了几本Python经典的书,知道了一些常见的类库.在几本语法应用熟练的情况下,如果不做题,像是无法显著的提高自己的知识储备了(所以叫你去做python challenge啊,什么都不会~~

python自我学习1--class 面向对象变成

之前对面向对象编程一直不是很理解,今天仔细分析了下,我的理解如下: 在python开来,所有东西都是分类的, 比如,人,动物,植物都是属于某一类,这就叫,类:class 然后到了类里面的某一个, 比如人,分为白人,黑人,黄种人,这就叫,对象:objeck 这些对象组成了人这一类 白人,白皮肤,蓝眼睛,金色头发,这就叫这个对象的,属性:property 这些属性组成了这个对象 我们查看属性的方式,就叫做方法 看下下面的例子: [[email protected] python]# cat huma

python进阶学习(二)

本节学习图形用户界面 ------------------------ 本节介绍如何创建python程序的图形用户界面(GUI),也就是那些带有按钮和文本框的窗口.这里介绍wxPython : 下载地址:http://www.wxpython.org/download.php 根据自己的操作系统下载相应版本. 安装: 安装过程非常简单,以win7系统为例,点击下载的exe 文件,保持安装目录与本机的python目录一致就OK了. 创建并显示一个框架 import wx # 需要导入wx模块 ap

python进阶学习(一)

同样是<python基础教程(第二版)>的内容,只是后面内容学起来,相比前面会比较有趣,也更加实用,所以,将"基础"改为"进阶". python 电子书分享地址:http://yunpan.cn/Q2U87uGrNiTA3 本节讲文件的操作 ------------------------------- 打开文件 open函数用来打开文件,语法如下: open(name[, mode[,buffering]]) open函数使用一个文件名作为唯一的强制参

Python进阶 学习笔记(三)

(涉及内容:定制类) __str__和__repr__ 如果要把一个类的实例变成 str,就需要实现特殊方法__str__(): class Person(object): def __init__(self, name, gender): self.name = name self.gender = gender def __str__(self): return '(Person: %s, %s)' % (self.name, self.gender) 现在,在交互式命令行下用 print 

Python进阶 学习笔记(二)

(涉及内容:面向对象,类的继承) 定义类并创建实例 在Python中,类通过 class 关键字定义.以 Person 为例,定义一个Person类如下: class Person(object): pass 按照 Python 的编程习惯,类名以大写字母开头,紧接着是(object),表示该类是从哪个类继承下来的.类的继承将在后面的章节讲解,现在我们只需要简单地从object类继承. 有了Person类的定义,就可以创建出具体的xiaoming.xiaohong等实例.创建实例使用 类名+()

python开发学习-day07(面向对象之多态、类的方法、反射、新式类and旧式类、socket编程)

s12-20160227-day07 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* BLOCKS =============================================================================*/ p, blockquote, ul, ol, dl, table, pre { margin

Python 进阶学习笔记

把函数作为参数 import math def add(x, y, f): return f(x) + f(y) print add(9, 16, math.sqrt) map(f, list) 函数 接收一个 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回. def f(x): return x * x list = [1, 2, 3, 4] print map(f, list) # [1, 4, 9, 16] reduce(f, l