类通过关键字 class 引导,后跟类的名称,通常第一个字母大写,类名称MyClass后的括号内的object表示该类的父类,如果定义的类没有显明从哪个类继承来的,就在括号内使用object,object类是所有类的父类。

__init__是定义的类的构造函数,可以对类的变量进行初始化,每当该类被实例化的时候,就会先执行该构造函数。

在类中定义的函数的一个参数一定要是self,代表类当前的实例化对象,但在调用时,不需要传递这个参数。

2. 类的实例

类的实例化方法如下:

obj=MyClass(x,x)

obj是类的实例化对象,MyClass是类名,括号内的变量是类的初始化变量(如果类中有定义的话)。

情况一: 类的初始属性为空

class MyClass(object):
    def __init__(self):        
        print("MyClass类的构造方法被调用!")   
class1=MyClass()

情况二: 类含有初始属性

class MyClass(object):
    def __init__(self,data1,data2):
        self.__data1=data1
        self.data2=data2    
class1=MyClass('first_data','sencond_data')
print(class1.data2)
class1=MyClass('first_data','sencond_data') print(class1.data2)


在这里类MyClass的实例化对象class1就具有了两个属性,分别是data1和data2,data1是私有属性,只能在类内使用,data2是公有属性,可以在类外使用。data1和data2就是对数据(属性)的封装。

实现逻辑(方法)的封装

class MyClass(object):
    def __init__(self,data1,data2):
        self.__data1=data1
        self.data2=data2    
    def printMax(self):
        if self.__data1>self.data2:
            print(self.__data1)
        else:
            print(self.data2)
class1=MyClass(66,88)
class1.printMax()


上边类中的printMax函数实现了比较两个数据大小并打印的功能,这个实现逻辑在类外部来说是看不到的,只可以调用该接口,相当于一个黑箱子,这就是实现逻辑(方法)的封装。

4. 类的私有属性

可以在类内定义类的私有属性和方法,私有的表明只属于类内部的,在类外部是不可以直接访问的,python定义私有属性和私有方法的方法是在名称前加上两个下划线 “__”。

私有属性(变量)

class MyClass(object):
    def __init__(self,data1,data2):
        self.__data1=data1
        self.data2=data2   
class1=MyClass(66,88)
print(class1.data2)
print(class1.__data1)


上例中data2是公有变量,可以在类外访问,所有calss1.data2没有问题。 data1是类的私有属性,类外不可以访问,使用 class1.__data1会报错 'MyClass' object has no attribute '__data1' 。

class MyClass(object):
    def __init__(self,data1,data2):
        self.__data1=data1
        self.data2=data2   
    def __func1(self):
        print("MyClass类的私有方法被调用!")
    def print_data(self):
        self.__func1()
        print(self.__data1)
        print(self.data2)
class1=MyClass(66,88)
class1.print_data()
#class1.__func1()


上例中 print_data方法是类的公有方法,可以在类外直接调用, __func1方法是类的私有方法,不可以在类外调用,但是可以通过类内的print_data方法调用私有的__func1方法,即私有的方法可以在类的内部被调用。

5. 类外访问类的私有属性

类的私有属性保证了外部代码不能随意访问/更改对象内部的数据和方法。

但是对类内私有属性,在类外仍然可以通过以下两种 方式进行访问和修改,一是通过类内的公有函数修改,一是“非法修改”。

通过类内的公有函数修改

class MyClass(object):
    def __init__(self,data1,data2):
        self.__data1=data1
        self.data2=data2   
    def setData1(self,data):
        self.__data1=data
    def printData1(self):
        print(self.__data1)
class1=MyClass(66,88)
class1.setData1(100)
class1.printData1()

python中类的私有属性或方法之所以不能直接从类外部进行访问,是因为python解释器把私有的属性或方法 __xx 对外展示成了 _Class__xx,即单下划线+类名+__xx 。所以如果你执意,仍然可以在类外部通过这个改变后的名称“非法”访问私有属性。

class MyClass(object):
    def __init__(self,data1,data2):
        self.__data1=data1
        self.data2=data2   
    def printData1(self):
        print(self.__data1)
class1=MyClass(66,88)
print(class1._MyClass__data1)

当然一般不建议这么干,不同的python编译器可能把私有属性/方法包装成不同的名字。

1. 定义类python中定义一个类的格式如下:class MyClass(object): def __init__(self,data1,data2): self.__data1=data1 self.data2=data2 def __func1(self): print("MyCla
Python 面向对象面向对象基础 定义 创建对象添加和获取对象属性魔法 方法 对象的生命周期 私有 属性和 私有 方法 面向对象特性 封装 封装 案例演练继承继承的传递性 方法 的重写父 私有 属性和 私有 方法 多继承新式 与经典 多态多态案例演练面向对象其他实例对象 对象 属性 方法 静态 方法 案例演示 面向对象基础 特征 = 属性 行为 = 方法 class 名: def 方法 名(self[, 参数列表]): 对象名 = 名() 对象 = 实例 创建对象 = 实例化 对象 由哪一个对象调用的 方法 方法 内的self 就是哪一个对象的引用; 打印对象和打印self得到的结
python 中使用class关键字来 定义 定义 时需要注意以下几个事项: (1) 代码块以class关键字开头,代表 定义 。 (2)class之后是 名,这个名字由用户自己指定,命名规则一般是多个单词组成的名称,每个单词除了第一个字母大写之外,其余字母均为小写,class和 名中间要有空格。 (3) 名后加冒号, 体由缩进的语句块组成,
C++考试题目: 题目:建立一个名为Student的 ,该 有以下几个 私有 成员 变量 :学生姓名、学号、性别、年龄。还有以下两个成员函数:一个用于初始化学生姓名、学号、性别和年龄的构造函数,一个用于输出学生信息的函数。编写一个主函数。声明一个学学生对象。然后调用成员函数在屏幕输出学生信息。 编程环境:vs2010,语言:c++ 属性:控制台应用程序。
面向对象编程(OOP)是最有效的软件编写 方法 之一,我们会使用到 (CLASS)来 定义 出一大 对象都有的行为,当我们基于 来创建对象时,每个对象都具备这种通用的行为。 然后根据需要赋予每个对象独特的个性。根据 来创建对象被称为 实例化 ,你将把自己编写的 存储在模块中,并在自己的程序文件中导入其他程序员编写的 。 1. 创建 简单来说我们 定义 应该包含两部分:属性+功能。 我们来 定义 一...
通过 定义 数据 型的属性(数据)和 方法 (行为),也就是说,“ 将行为和状态打包在一起”。 对象是 的具体实体,一般称为“ 的实例”。 看做“饼干模具”,对象就是根据这个“模 具”制造出的“饼干”。 从一个 创建对象时,每个对象会共享这个 的行为( 定义 方法 ),但会有自己的属性值(不共享状态)。更具体一点:“ 方法 代码是共享的,属性数据不共享”。 Python 中,“一切皆对象”。 也称为“ 对象”, 的实例也称
Python 中,没有严格意义上的 私有 变量 ,但是可以通过以下方式实现 似于 私有 变量 的效果: 1. 在 变量 名前面加上两个下划线,例如`__variable`,表示该 变量 私有 的,不应该被外部直接访问,而只能通过 方法 来访问或修改。 2. 在 中使用`self.__variable`来 定义 私有 变量 ,这样在 外部无法直接访问该 变量 。 class MyClass: def __init__(self, a): self.__a = a def my_method(self): self.__a += 1 print(self.__a) 在这个例子中,`__a`是一个 私有 变量 ,只能在 方法 中进行访问或修改。`my_method` 方法 可以访问`__a`并将其加1,但是在 的外部无法直接访问`__a`。