Python对象和类

Python 里的所有数据都是以对象形式存在的,对象是类的实例。

定义类(class)

使用class来定义一个类。

比如,定义一个cat类,如下:

class Cat():  def __init__(self):
      self.name = name

创建两个cat类的实例cat1,cat2,如下:

cat1 = Cat(‘mimi‘)
cat2 = Cat(‘momo‘)

类中的__init__为初始化函数,在实例创建的时候执行。它的第一个参数必须是self.

继承

一个类可以继承另一个类,被继承的类可以称为‘父类‘或者‘基类‘。使用继承得到的新类会自动获得旧类中的所有方法,而不需要进行任何复制。在新类中,可以定义新的方法,也可以对继承的方法修改,修改后会覆盖原有的方法。

在python中,所有的类都继承了object类。

下面是一个简单的类继承的例子。

class Cat():
  def __init__(self):
      self.name = name  def play():    print("I like play")

class BossCat(Cat):
    def play(ball):    print("I like play %s", %ball)

BossCat的play方法覆盖了Cat类的play方法,所以,这两个类各自的对象执行play时会有不一样的表现。

使用super方法

子类中的__init__()方法(如果定义)会覆盖父类中__init__()。如果子类的__init__()方法要继承父类的__init__()方法的参数就可以使用super方法,如下:

>>> class Person():
    def __init__(self,name):
        self.name = name

>>> class EmailPerson(Person):
    def __init__(self,name,email):
        super().__init__(name)
        self.email = email

属性的访问和设置

python中所有特性都是公开的,如果想要在类中实现一些私有属性的话,可以:

1 getter 方法和setter 方法

比如:

>>> class Person(object):
    def __init__(self,name,age):
        self.name = name
        self.age = age

    def get_name(self):
        return self.name

    def set_name(self,name):
        self.name = name

>>> perter= Person(‘peter‘,28)
>>> perter.name
‘peter‘

>>> perter.name = ‘perter‘
>>> perter.name
‘perter‘
>>> 

2 使用@property获取属性, @xxx.setter来设置属性值。

比如:

class Student(object):

    @property
    def birth(self):
        return self._birth

    @birth.setter
    def birth(self, value):
        self._birth = value

    @property
    def age(self):
        return 2014 - self._birth

>>> S1 = Student()
>>> S1.birth = 1989
>>> S1.birth
1989
>>> S1.age
25
>>> S1.birth = 1990
>>> S1.birth
1990
>>> S1.age
24
>>> S1.age = 26
Traceback (most recent call last):
  File "<pyshell#15>", line 1, in <module>
    S1.age = 26
AttributeError: can‘t set attribute

3 使用‘__‘来定义内部私有/隐藏的属性。

如下:直接访问__定义的属性时会报错。

>>> class Person(object):
    def __init__(self,input_name,age):
        self.__name = input_name
        self.__age = age

    @property
    def name(self):
        return self.__name
    @name.setter
    def name(self,input_name):
        self.__name = input_name

>>> Peter = Person(‘Peter‘,29)
>>> Peter.name
‘Peter‘

>>> Peter.__name
Traceback (most recent call last):
  File "<pyshell#24>", line 1, in <module>
    Peter.__name
AttributeError: ‘Person‘ object has no attribute ‘__name‘

实例方法/类方法/静态方法

实例方法(instance method): 以self作为第一个参数的方法。当调用方法时,python会将调用该方法的对象作为self参数传入。

类方法(class method):使用@classmethod修饰的方法。注意,类方法的第一个参数是类本身cls。

>>> class TeamA():
    num = 0
    def __init__(self):
        TeamA.num += 1

    @classmethod
    def counter(cls):
        print("instance number is: %s" %cls.num)

>>> a1=TeamA()
>>> TeamA.counter()
instance number is: 1
>>> a2 = TeamA()
>>> TeamA.counter()
instance number is: 2
>>> 

静态方法(static method): 用@staticmethod 修饰。

时间: 2024-12-16 12:38:20

Python对象和类的相关文章

python 对象和类

对象: 在python中所有数据都是以对象的形式存在,即‘一切事物皆对象’,对象既包含了数据,也包含了代码. 类: 在Python中有很多用来创建其他标准数据类型的类,例如列表.字典等.如果想在Python中创建属于自己的对象.必须用关键字class来定义一个类.例如 class person(): def __init__(self,name): self.name = name print('%s ' % self.name) n1 = person('sunlieqi') 上面的代码做了以

对于python,一切事物都是对象,对象基于类创建

新建列表.新建string字符串 1 li1 = [1, 2, 3, 4] 2 li2 = list([1, 2, 3]) 3 4 s1 = "abc" 5 s2 = str("abc") 6 7 print(li1) 8 print(type(li1)) 9 10 print(li2) 11 12 print(s1, s2) 13 14 #显示结果: 15 #[1, 2, 3, 4] 16 #<class 'list'> 17 #[1, 2, 3] 1

Python全栈--9.1--面向对象进阶-super 类对象成员--类属性- 私有属性 查找源码类对象步骤 类特殊成员 isinstance issubclass 异常处理

上一篇文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 对象,根据模板创建的实例(即:对象),实例用于调用被包装在类中的函数 面向对象三大特性:封装.继承和多态 本篇将详细介绍Python 类的成员.成员修饰符.类的特殊成员. 注意点: self ,我们讲过了,self = 对象,实例化后的对象调用类的各种成员的时候的self就是这个对象. 而且我们也讲过了

python里的类与一切事物都是对象

对于python,一切事物都是对象,对象基于类创建 列如 name='csdcs' li=[1,3,43] 上面两个都是对象,因为它们都是python中的 类里面存着许多的功能,功能的集合,     对象里存着具体输入的值,与类的内存地址 当对象要进行操作实现不同的功能时,它就会根据保存的内存地址去寻找类引用里面的功能 这样,避免了,功能相同的对象里面,每个对象都去保存相同的功能,它们功能相同都直接去引用类里的功能就行了,类里面就保存了它们的功能 所以对象都是基于类创建的 列如: ll=[11,

python的类和对象(类的静态字段)

转自:http://www.cnblogs.com/Eva-J/p/5044411.html 什么是静态字段 在开始之前,先上图,解释一下什么是类的静态字段(我有的时候会叫它类的静态变量,总之说的都是它.后面大多数情况可能会简称为类变量.): 我们看上面的例子,这里的money就是静态字段,首先看它的位置,是在father类中,而不是在__init__中.那么一个小小的静态字段,我为什么要特意写一篇番外给它呢?耐着性子看下去,你就会发现一个小小的类变量,却折射出了整个类的世界. 首先我们先来解释

简述Python中的类与对象

Python中的类 类的定义 示例: class Person: country = "China" def __init__(self, name, age): self.name = name self.age = age def speak(self, word): print(word) 其中 country 是类属性,即 Person类 的静态属性,speak() 为 Person类的函数属性,即类的动态属性~ 类的实例化 对上述示例的类进行实例化: >>>

python中类对象、实例对象、类属性、实例属性、类方法、实例方法、静态方法

类对象.类属性与实例对象.实例属性的区别 在Python中一切皆是对象,类是一个特殊的对象即类对象,描述类的属性称为类属性.类属性在内存中只有一份,在__init__外部定义. 通过类创建的对象称为实例对象,描述实例对象的属性称为实例属性.实例属性在各自对象的内存中都保存一份,在__init__方法内部定义. 实例方法.类方法.静态方法的区别 这三种方法都是保存在类的内存中,调用者不同. 实例方法由对象调用,至少一个self参数,self代表对象的引用. 类方法有类调用,至少一个cls参数,并且

python中的类和对象

类和对象 1. 类和对象和概念 类:共性事物的抽象,是对某一类具有共同事物的描述,是具有相同属性和方法的集合 对象:类的实例,是共性事物的一个体现,是这类事物中的每个个体 2. 总结: 类是对象的模板,对象是类的实例 3. 创建类的语法 class Math: #类名一般首字母大写 a = 4 #属性 b = 5 def add(self): c = self.a + self.b return c 注意: 类名一般首字母大写,比如class User ,其中class是关键字 类里面包含属性(

Python 之面向对象:类和对象调用类中的变量和方法

面向对象的核心是对象,用对象来操控类里面的方法和变量,加上类还具有继承.封装.多态三大特性,提高了代码的复用性和规范性. 一.对象 调用类中的变量和方法 二 .类  调用类中的变量和方法 原文地址:https://www.cnblogs.com/tianpin/p/11283032.html