类就是一类事物的概括,比如人。
类型是数据类型,有内置的如字符串,数字,复数等,还有其他自定义的,就是自己写的类。
对象和实例是一个东西,是类里具体的东西,如男人,女人,其他人等,这里男人,女人还可以是一类,如再分年老的男人,年轻的男人等。
只要记住:类是一类事物的统称,实例(或对象)是具体的东西。
仅供参考。
举例:
class
Person:
'''人的基本属性:名字,年龄,性别等'''
def
__init__(self,
name,
age,
sex):
self.name
=
name
self.age
=
age
self.sex
=
sex
class
Man(Person):
def
__init__(self,
name,
age):
super(Man,
self).__init__(name,
age,
'male')
class
Woman(Person):
def
__init__(self,
name,
age):
super(Woman,
self).__init__(name,
age,
'female')
‘贰’ 如何理解python的类与对象
问的太笼统了,不知道答的对不对. 看下面的图
左边元类,中间类,右边实例
其实记住的只是一点:python里一切都是对象,实例是对象,类是对象,元类也是对象.
这里题主说的类和对象其实是包含和被包含的关系了.
那么Python里的类和其他的对象有什么区别?
实例是对象,因为创建实例的是类.类是对象,创建类的是什么呢?Python给的答案就是元类.你可以通过type()函数来查看它的元类.(type(type)得到的是它自己)
其实这个类和其他对象一样,所以我们就不惊讶它为什么有类方法,类变量了..
‘叁’ python类的定义与使用是什么
类Class:用来描述具体相同的属性和方法的对象的集合。定义了该集合中每个对象所共有的属性和方法。对象是类的示例。
类定义完成时(正常退出),就创建了一个 类对象。基本上它是对类定义创建的命名空间进行了一个包装;我们在下一节进一步学习类对象的知识。原始的局部作用域(类定义引入之前生效的那个)得到恢复,类对象在这里绑定到类定义头部的类名(例子中是 ClassName )。
基本语法
Python的设计目标之一是让代码具备高度的可阅读性。它设计时尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观。它不像其他的静态语言如C、Pascal那样需要重复书写声明语句,也不像它们的语法那样经常有特殊情况和意外。
以上内容参考:网络-Python
‘肆’ Python中类与对象的其他说明
9.4. 一些说明
数据属性会覆盖同名的方法属性。为了避免意外的名称冲突,这在大型程序中是极难发现的 Bug,使用一些约定来减少冲突的机会是明智的。可能的约定包括:大写方法名称的首字母,使用一个唯一的小字符串(也许只是一个下划线)作为数据属性名称的前缀,或者方法使用动词而数据属性使用名词。
数据属性可以被方法引用,也可以由一个对象的普通用户(客户)使用。换句话说,类不能用来实现纯净的数据类型。事实上,Python 中不可能强制隐藏数据——一切基于约定(如果需要,使用 C 编写的 Python 实现可以完全隐藏实现细节并控制对象的访问。这可以用来通过 C 语言扩展 Python)。
客户应该谨慎的使用数据属性——客户可能通过践踏他们的数据属性而使那些由方法维护的常量变得混乱。注意:只要能避免冲突,客户可以向一个实例对象添加他们自己的数据属性,而不会影响方法的正确性——再次强调,命名约定可以避免很多麻烦。
从方法内部引用数据属性(或其他方法)并没有快捷方式。我觉得这实际上增加了方法的可读性:当浏览一个方法时,在局部变量和实例变量之间不会出现令人费解的情况。
一般,方法的第一个参数被命名为 self。这仅仅是一个约定:对 Python 而言,名称 self 绝对没有任何特殊含义。(但是请注意:如果不遵循这个约定,对其他的 Python 程序员而言你的代码可读性就会变差,而且有些 类查看器 程序也可能是遵循此约定编写的。)
类属性的任何函数对象都为那个类的实例定义了一个方法。函数定义代码不一定非得定义在类中:也可以将一个函数对象赋值给类中的一个局部变量。例如:
# Function defined outside the class
def f1(self, x, y):
return min(x, x+y)
class C:
f = f1
def g(self):
return 'hello world'
h = g
现在 f, g 和 h 都是类 C 的属性,引用的都是函数对象,因此它们都是 C 实例的方法-- h 严格等于 g 。要注意的是这种习惯通常只会迷惑程序的读者。
通过 self 参数的方法属性,方法可以调用其它的方法:
class Bag:
def __init__(self):
self.data = []
def add(self, x):
self.data.append(x)
def addtwice(self, x):
self.add(x)
self.add(x)
方法可以像引用普通的函数那样引用全局命名。与方法关联的全局作用域是包含类定义的模块。(类本身永远不会作为全局作用域使用。)尽管很少有好的理由在方法 中使用全局数据,全局作用域却有很多合法的用途:其一是方法可以调用导入全局作用域的函数和方法,也可以调用定义在其中的类和函数。通常,包含此方法的类也会定义在这个全局作用域,在下一节我们会了解为何一个方法要引用自己的类。
每个值都是一个对象,因此每个值都有一个 类( class ) (也称为它的 类型( type ) ),它存储为 object.__class__ 。
‘伍’ python中类对象和方法的区别是什么
python使用对象模型来存储数据,也就是说构造任何类型的值都是一个对象。所有的python对象都拥有三个特性:身份id,类型和值。
身份id:唯一的身份标识,可以使用内建函数id()来得到,这个值可以被认为是该对象的内存地址。
类型:对象的类型决定了该对象可以保存什么类型的值,可以进行什么样的操作,以及遵循什么样的规则,可以用内建函数type()查看
python对象的类型,也可以用isinstance(),在python中类型也是对象。
值:对象表示的数据项。布尔逻辑运算符包括and、or、not,对象值的比较除了一些常见的运算符(< > <= >= == !=)之外,还可以
使用cmp()内建函数,如果是用户自定义对象,cmp()对调用该类的特殊方法__cmp__()。对于字符串来说,内建函数str(obj)返回对象适
合可读性好的字符串表示,而另一个内建函数repr(obj)返回一个对象的字符串表示,通常情况下obj == eval(repr(obj))这个等式是成立
的。可以这么说,repr()的输出对python比较友好,str()的输出对人比较友好。方法是在类中定义的函数。
更多技术请关注Python视频教程。
‘陆’ python中是否有类,其作用是
python中元类是类的类。类定义类的实例(即对象)的行为,而元类定义类的行为。类是元类的实例。虽然在Python中你可以对元类使用任意可调用对象(如Jerub演示),但是更好的方法是使其成为实际的类。type是Python中常见的元类。type它本身是一个类,并且是它自己的类型。你将无法type纯粹使用Python 重新创建类似的东西,但是Python有点作弊。要在Python中创建自己的元类,你实际上只想将其子类化type。元类最常用作类工厂。class执行该语句时,Python首先将class语句的主体作为普通代码块执行。生成的名称空间(字典)保留了将来类的属性。通过查看待定类的基类(继承了元类),待定类的__metaclass__属性(如果有)或__metaclass__全局变量来确定元类。然后使用该类的名称,基数和属性调用该元类以实例化它。但是,元类实际上定义了类的类型,而不仅仅是它的工厂,因此你可以使用它们做更多的事情。例如,你可以在元类上定义常规方法。这些元类方法就像类方法,因为它们可以在没有实例的情况下在类上调用,但是它们也不像类方法,因为它们不能在类的实例上被调用。type.__subclasses__()是type元类上方法的示例。你还可以定义正常的“魔力”的方法,如__add__,__iter__和__getattr__,执行或如何变化的类的行为。
‘柒’ Python中的类属性和对象属性的区别详解
类属性:
class Employee(object):
emCount=0
def __init__(self,name,salary):
self.nane=name
self.salary=salary
类属性就是定义类的时候直接定义的属性 emCount,类似于java里面的static修饰的属性,可以直接通过 类名.属性名访问:Employee.emCount
实例属性是在__init()方法中定义的属性,例如name,和salary,self是指向自己的,类似java的this关键字,实际是通过内置的方法setattr()完成的
可以通过重写setatttr()进行类属性的增加和获取
‘捌’ python中"类"和"对象"的区别
类就是一类事物,对象是这类事物中的一个具体事物。
就像人类的一个成员是一个人。
‘玖’ python中类与对象补充怎么理解的
9.7. 补充
有时类似于 Pascal 中“记录(record)”或 C 中“结构(struct)”的数据类型很有用,它将一组已命名的数据项绑定在一起。一个空的类定义可以很好地实现它:
class Employee:
pass
john = Employee() # Create an empty employee record
# Fill the fields of the record
john.name = 'John Doe'
john.dept = 'computer lab'
john.salary = 1000
某一段 Python 代码需要一个特殊的抽象数据结构的话,通常可以传入一个类,事实上这模仿了该类的方法。例如,如果你有一个用于从文件对象中格式化数据的函数,你可以定义一个带有 read() 和 readline() 方法的类,以此从字符串缓冲读取数据,然后将该类的对象作为参数传入前述的函数。
实例方法对象也有属性:m.__self__ 是一个实例方法所属的对象,而 m.__func__ 是这个方法对应的函数对象。
‘拾’ python中类对象的理解总结
9.3.2. 类对象
类对象支持两种操作:属性引用和实例化。
属性引用 使用和 Python 中所有的属性引用一样的标准语法:obj.name。类对象创建后,类命名空间中所有的命名都是有效属性名。所以如果类定义是这样:
class MyClass:
"""A simple example class"""
i = 12345
def f(self):
return 'hello world'
那么 MyClass.i 和 MyClass.f 是有效的属性引用,分别返回一个整数和一个方法对象。也可以对类属性赋值,你可以通过给 MyClass.i 赋值来修改它。 __doc__ 也是一个有效的属性,返回类的文档字符串:"A simple example class"。
类的 实例化 使用函数符号。只要将类对象看作是一个返回新的类实例的无参数函数即可。例如(假设沿用前面的类):
x = MyClass()
以上创建了一个新的类 实例 并将该对象赋给局部变量 x。
这个实例化操作(“调用”一个类对象)来创建一个空的对象。很多类都倾向于将对象创建为有初始状态的。因此类可能会定义一个名为 __init__() 的特殊方法,像下面这样:
def __init__(self):
self.data = []
类定义了 __init__() 方法的话,类的实例化操作会自动为新创建的类实例调用 __init__() 方法。所以在下例中,可以这样创建一个新的实例:
x = MyClass()
当然,出于弹性的需要,__init__() 方法可以有参数。事实上,参数通过 __init__() 传递到类的实例化操作上。例如,
>>> class Complex:
... def __init__(self, realpart, imagpart):
... self.r = realpart
... self.i = imagpart
...
>>> x = Complex(3.0, -4.5)
>>> x.r, x.i
(3.0, -4.5)