Python类

简介:

类(class)

python中的类是描述具有相同属性和方法的对象的集合类的一般形式:

class ClassName:

    '''类的说明'''

    类的内容

类的内容可以写类的全局变量,方法等

例子:

class ren(object):

    '''this is a new class'''

    name = 'meinv'

    sex = 'woman'

#类的实例化

a = ren()

print(type(a))

print(a.name)

print(a.sex)

a.age = 10

print(a.age)

结果:

<class '__main__.ren'>

meinv

woman

10


类的构造器

__init__ 构造函数,在生成对象时调用。由于类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。通过定义一个特殊的__init__方法,在创建实例的时候,就把name,score等属性绑上去:

例子:

#所有类都继承object类,不写则默认是继承object类

class Student(object):

    #类的构造器,调用类的时候self可以不指定,python解释器默认将self指定到自身

    def __init__(self, name, score):

        self.name = nam

        self.score = score

例子2:

class Student(object):

def __init__(self, name, score):

self.name = name

self.score = score

s = Student('abc', 123)

print(s.name)

print(s.score)

输出:

abc


123


类的继承

Python的类支持多继承,多继承的格式如下,使用逗号分隔:

例子:

class A:

    ...

class B:

    ...
class C(A, B):

    ...
类的继承中,Python首先使用子类中的方法,如果子类中没有则去父类中寻找。变量也相同,首先寻找子类中的变量,没有找到后才去父类中寻找。

例子2:

class parent:

    name = 'parent'
    age = 100
    def __init__(self):
        print('my name is parent')
    def get_name(self):
        return self.name
    def get_age(self):
        return self.age
class child(parent):
    def __init__(self):
        print('my name is clild')
    def hello(self):
        print('hello child')
a = child()
a.hello()
print(a.get_name())
print(a.get_age())
输出:
my name is clild
hello child
parent
100


类的重写

Super()方法

#在class parent(object):定义父类的时候,一定要写继承object类,不然会报错可以解决

class parent(object):

    name = 'parent'

    age = 100

    def __init__(self):

        print('my name is parent')

    def get_name(self):

        return self.name

    def get_age(self):

        return self.age


class child(parent):

    def __init__(self):

        super(child, self).__init__()

        #parent.__init__()

        #使用父类.方法的方式直接重写,但是类中需要重写的内容较多时不方便

        print('my name is child.')

    def hello(self):

        print('hello child')

a = child()

a.hello()

print(a.get_name())

print(a.get_age())

输出:

my name is parent

my name is child

hello child

parent

100


类的私有变量

单下划线开头表示protected类型变量,在一个模块中以单下划线开头的变量和函数被默认当作内部函数。即保护类型只能允许其本身与子类进行访问。 当使用“from a_module import *”时,不会将以一个下划线开头的对象引入 ;如果使用 import a_module 这样导入模块,仍然可以用 a_module._some_var 这样的形式访问到这样的对象。

双下划线表示私有类型的变,只能允许这个类本身进行访问,连子类也不可以用。

前后双下划线定义的是特列方法。用户控制的命名空间内的变量或是属性,如__init__, __import__。只有当文档有说明时使用,不要自己定义这类变量。 (就是说这些是python内部定义的变量名)

例子

classPersonDemo():

    def __init__(self):

        self.__name=''

        self.__age=0

    def get_name(self):

        return self.__name

    def set_name(self,value):

        self.__name=value

a=PersonDemo()

a.set_name('kwsy')

print a.get_name()


内置类属性

__dict__ : 类的属性(包含一个字典,由类的数据属性组成)

__doc__ :类的文档字符串

__name__: 类名

__module__: 类定义所在的模块(类的全名是'__main__.className',如果类位于一个导入模块mymod中,那么className.__module__ 等于 mymod)

__bases__ : 类的所有父类构成元素(包含了以个由所有父类组成的元组)




本文转自 粗粮面包 51CTO博客,原文链接:http://blog.51cto.com/culiangmianbao/1979467,如需转载请自行联系原作者

相关文章
|
3天前
|
C++ Python
Python中的类与对象
Python中的类与对象
6 1
|
6天前
|
Python
在Python中,类的属性可以分为公有属性和私有属性
Python类包含公有和私有属性。公有属性可直接外部访问,如`person.name`,而私有属性如`_name`需通过getter/setter方法访问,如`person.getName()`和`person.setName()`。私有属性用于封装数据、隐藏实现细节,增强代码可维护性和安全性。封装能灵活修改内部实现,不影响外部;安全性防止外部非法修改数据;一致性确保所有数据操作在类内完成,简化代码并减少错误。
24 10
|
6天前
|
Python
【Python 基础】Python中的实例方法、静态方法和类方法有什么区别?
【5月更文挑战第6天】【Python 基础】Python中的实例方法、静态方法和类方法有什么区别?
|
6天前
|
存储 程序员 Python
Python中自定义类实例化数组的艺术
Python中自定义类实例化数组的艺术
8 1
|
6天前
|
程序员 Linux C++
Python中的WinForms类桌面应用程序开发
Python中的WinForms类桌面应用程序开发
23 4
|
8天前
|
Java 开发者 索引
Python基础语法:类笔记
本篇博文是把自己在学习python类的过程中自己理解和笔记,一点一点总结的写出出来,做一个总结,加深对面向对象编程的理解。
|
12天前
|
数据可视化 索引 Python
数据分享|Python用PyMC3贝叶斯模型平均BMA:采样、信息准则比较和预测可视化灵长类动物的乳汁成分数据
数据分享|Python用PyMC3贝叶斯模型平均BMA:采样、信息准则比较和预测可视化灵长类动物的乳汁成分数据
|
18天前
|
运维 算法 Shell
第六章 Python类(面向对象编程)
第六章 Python类(面向对象编程)
|
19天前
|
数据安全/隐私保护 Python
Python从入门到精通——2.2.1深入学习面向对象编程:类和对象的定义
Python从入门到精通——2.2.1深入学习面向对象编程:类和对象的定义
|
19天前
|
数据可视化 算法 数据挖掘
Python用KShape对时间序列进行聚类和肘方法确定最优聚类数k可视化
Python用KShape对时间序列进行聚类和肘方法确定最优聚类数k可视化