Python札记人工智能/模式识别/机器学习精华专题大数据,机器学习,人工智能

Python札记30_属性和数据

2019-07-04  本文已影响0人  皮皮大

类属性

class  A:
    x = 6 
A.x
image.png

在Python中万物皆对象,类也是对象。对象是有属性和方法的,类也有属性和方法。属性是可以进行增加和删除等操作的。

class A:
   x = 6    # 定义一个属性
A.x

A.y = 10   # 增加一个属性
del A.x  # 删除以后再调用则报错
A.y = 4   # 修改属性的值
dir(A)  # 通过dir查看具体的方法
['__class__',
 '__delattr__',
 '__dict__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__le__',
 '__lt__',
 '__module__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__weakref__']

A.__base__   # 显示父类
A.__dict__  # 以字典的形式显示类的所有属性和值
image.png image.png image.png

创建实例和实例属性

创建实例

创建实例一般通过调用类来进行是实现。之前的例子总,boy实例就是通过调用了Person类来实现的。

class Person:       # 定义一个Person类
    """
    This is a sample of class   # 注释部分
    """
    
   def __init__(self, name):      # 初始化函数;传入另一个参数name
        self.name = name

    def get_name(self):
        return self.name      # 通过get_name函数返回self.name也就是初始化函数中参数name的值

    def color(self, color):
        d = { }   
        d[self.name] = color   # 向字典中添加键值name:color对并返回
        return d

# 调用Person类
if __name__ == "__main__":
    boy = Person("xiaoming")     # 利用Person类创建实例boy
    print(boy.name)
    name = boy.get_name()   # 加上括号的称之为方法(函数),调用函数即方法
    print(name)
    boy_color = boy.color("black")
    print(boy_color)

init函数

class Person:
    def __int__(self, name, lang="python", website="www.baidu.com"):  # 属性的另一种定义
        self.name = name  # name就是函数中传进来参数的值;lang、website相同
        self.lang = lang
        self.website = website
        self.email = "123456@qq.com"    # 增加一个属性

实例属性

与类相同,实例具有的属性称之为实例属性

class  A:
    x = 6 
foo = A()   # 根据类A创建一个实例foo,实例foo具有属性
foo.x
image.png
foo.x += 1  # 修改实例属性
foo.x  # 结果是7
A.x   # 结果仍然是6
image.png

总结


特殊情形

当类中变量引用的是一个可变对象,类和实例的属性能够相互影响。

bar.y.append(5)  # 修改实例属性
bar.y
B.y   # 类的属性跟着改变
[1, 2, 3, 4, 5]

B.y.append(6)   # 修改类属性
B.y
bar.y  # 实例属性跟着变
[1, 2, 3, 4, 5, 6]
image.png
上一篇 下一篇

猜你喜欢

热点阅读