Python面向对象学习

以下面例子作为面向对象基础介绍,类比java里的面向对象既可以,大同小异

class Employee():

    raiseAmount=1.04
    employeeNum=0

    def __init__(self,first,surname,salary):#相当于java里面的结构体,self可以理解为this
        self.first = first  #属性
        self.surname = surname
        self.salary = salary
        self.email = first + ‘.‘ + surname + ‘@163.com‘
        Employee.employeeNum+=1

    def infosummary(self):#方法
        return ‘{}, {}, {}‘.format(self.first + " " + self.surname, self.salary,
                                   self.email)
    def raiseSalary(self):
        self.salary = self.salary * self.raiseAmount

employee1 = Employee(‘Harray‘,‘Potter‘,4000)#声明一个实例
employee2 = Employee(‘peter‘,‘lee‘,5000)
print(employee2.infosummary())
print(employee1.infosummary())
employee2.raiseAmount=1.09#修改全局变量
employee2.raiseSalary()
print(employee2.infosummary())

子类dog,cat继承动物animal,子类继承父类所有属性,并可以重写父类方法,并可以有自己的方法。

#继承
class Animal():
    name=""
    def __init__(self, age, weight , height):
        self.age = age
        self.weight = weight
        self.height = height
    def eat(self):
        print(self.name+‘ ‘+"is eating")

class Cat(Animal):
    pass
class Dog(Animal):
    def __init__(self,age,weight, height,name):
        Animal.__init__(self,age,weight,height)
        Animal.name=name
        Animal.eat(self)
    def bark(self):
        print(‘the dog is barking‘)

animal=Animal(10,100,20)
animal.name=‘cat‘
animal.eat()
cat = Cat(4,15,20)
cat.eat()#name没有初始化,所以结果的name为空
dog = Dog(5,30,50,‘dog‘)
dog.bark()
实例方法:在类中,定义的方法,这个方法的第一个参数默认是实例对象,一般习惯使用self类方法:在类中,定义的方法,这个方法的第一个参数默认是类对象,一般习惯用cls表示,用 @ classmethod装饰器装饰静态方法:在类中定义的方法,这个方法的参数没有要求,用 @ staticmethod装饰器装饰实例方法只能被实例(对象)调用类方法和静态方法可以被类或者实例调用
class Foo(object):

    # 实例方法,第一个参数必须是实例对象。一般习惯用self。
    def instance_method(self):
        print("是类{}的实例方法,只能被实例对象调用".format(Foo))

        # 类方法, 第一个参数必须是类 对象。一般习惯使用cls。使用@classmethod装饰器装饰。

    @classmethod
    def class_method(cls):
        print("是类方法")

        # 静态方法,参数没有要求,和类没有绑定关系,就是一个普通的方法            使用@staticmethod装饰器装饰。

    @staticmethod
    def static_method():
        print("是静态方法")

foo = Foo()

# 实例方法只能被实例调用。
foo.instance_method()

print(‘----------‘)

# 类方法可以被类或者实例调用。
Foo.class_method()
foo.class_method()

print(‘----------‘)

# 静态方法可以被类或者实例调用。
Foo.static_method()
foo.static_method()

对于Python的私有类属性不可以修改,但可以通过方法来实现对私有属性的控制。

class Animal():
    name=""
    def __init__(self, age, weight , height):
        self.__age = age #私有的,不能被访问
        #self.age = age #可以被访问
        self.weight = weight
        self.height = height
    def eat(self):
        print(self.name+‘ ‘+"is eating")
    @property
    def age(self):
        return self.__age
    def setAge(self,age):
        if isinstance(age,int):
            self.__age = age
    @age.setter
    def age(self,age):
        if isinstance(age,int):#实现对属性进行修改时进行检查
            self.__age = age

cat = Animal(12,23,34)
print(cat.age)
dog = Animal(22,22,22)
#print(dog.__age)#报错,无法访问私有属性
print(dog.age)
dog.setAge(29)
print(dog.age)
dog.age=37#直接赋值
print(dog.age)

具体详解可参考这位博文:https://www.cnblogs.com/ssj0723/p/10392993.html

关于Python的多态和多态性可以看这篇文章,我就不再转载了,https://www.cnblogs.com/luchuangao/p/6739557.html

原文地址:https://www.cnblogs.com/henuliulei/p/11366549.html

时间: 2024-08-28 22:37:20

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

Python 面向对象学习(一)

1. 面向对象的概念 面向对象编程--Object Oriented Programming,是我们在编程中解决问题的一个新的方式,一种编程的思想.而在常见的编程中,我们是以面向过程的方式解决的,首先我们了解一下面向对象与面向过程的基本概念. 1.1 面向过程 我们把完成一件工作的各个步骤依次编写代码,每一个步骤都可以封装成一个函数,在使用是只需要依次调用即可.特殊的,一个步骤也可以分成很多小的步骤,使用更小的函数来解决. 例如,把大象装进冰箱需要几步? 把冰箱门打开 把大象装进冰箱 把冰箱们关

Python面向对象学习小结之三 继承

继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 python中类的继承分为:单继承和多继承 class ParentClass1: #定义父类 pass class ParentClass2: #定义父类 pass class SubClass1(ParentClass1): #单继承,基类是ParentClass1,派生类是SubClass pass class SubClass2(ParentClass1,Pare

转 python语法学习面向对象之继承

传送门 python语法学习面向对象之继承 只要涉及到面向对象,”类“是必须出现的一个代名词. 类和对象是面向对象编程的两个主要方面.类创建一个新类型,而对象是这个类的实例. 类的一些概念: 包括初始化方法__init__,可以理解为构造,self,理解为this,等等在前一篇文章中介绍过,现在就学习类的继承. 继承: 面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制.继承完全可以理解成类之间的类型和子类型关系. 需要注意的地方:继承语法   class 派生类

开始学习Python面向对象编程

之前粗浅地学习过C++,对于面向对象有些了解,现在通过Python仔细学习一下面向对象: 类 类使用 class 关键字创建.类的域和方法被列在一个缩进块中. class Person: pass #pass语句表示一个空类 p = Person() print(p) $ python simplestclass.py <__main__.Person object at 0x019F85F0>#我们已经在 __main__ 模块中有了一个 Person 类的实例 对象的方法 class Pe

Python学习—面向对象学习下

面向对象下 1.构造方法与析构方法 class People(object): # 构造方法:__init__(),在实例化对象时自动执行的方法 def __init__(self, name, age): self.name = name self.age = age print("创建对象成功.......") # 析构函数:__del__(), 当你删除对象时,自动调用的方法 # 删除对象:del 对象名 def __del__(self): print("删除对象成功

Python 面向对象class(2)

Python 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对象编程. 接下来我们先来简单的了解下面向对象的一些基本特征. 面向对象技术简介 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定

python的学习内容

Python的学习路线 掌握基本的语法 这个入门的东西很多,最好的当然是去看官方的文档,如果英语不好那就另当别论,其次看一些优秀的书籍,当然这个也是耗费时间的,但是如果你要是速成,速度的速,那通过一些博客.视频其实也不失为好的方式,起码上手更容易一些了,尤其是你真正的第一门语言. 掌握常用的库 使用成熟可靠的第三方库是多么的高效,尤其是你就几个人小打小闹的时候,重复造轮子是多么的没有必要,但是你必须理解人家的机制,等你用第三方库多了,有能力写自己的库的时候,那我就是真正的恭喜你了. 自动化运维相

60分钟Python快速学习(转)

60分钟Python快速学习(给发哥一个交代) 阅读目录 第一步:开发环境搭建: 第一个Python功能:初识Python 02.Python中定义变量不需要数据类型 03.在Pythod中定义方法 04.在Python中书写自己的类 60分钟Python快速学习 之前和同事谈到Python,每次下班后跑步都是在听他说,例如Python属于“胶水语言啦”,属于“解释型语言啦!”,是“面向对象的语言啦!”,另外没有数据类型,逻辑全靠空格缩进表示等. 今天自己用了60分钟快速学习了下Python的语

Python开发学习路线

Python , 是一种面向对象的解释型计算机程序设计语言,具有丰富和强大的库,Python 已经成为继JAVA,C++之后的的第三大语言. 特点:简单易学.免费开源.高层语言.可移植性强.面向对象.可扩展性.可嵌入型.丰富的库.规范的代码.大这里给家列出从Python入门到实战学习路线. 一.入门教程 1.Python 面向对象编程 2.jquery入门 3.HTML+CSS基础入门 4.Javascript初步 5.Python语言编程基础 二.初级教程 1.Git 与 GitHub 2.P