python类(资料+疑惑)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python类(资料+疑惑)相关的知识,希望对你有一定的参考价值。

1.http://python-china.org/t/77 有关method binding的理解

2.[Python] dir() 与 __dict__,__slots__ 的区别

3.Descriptor HowTo Guide

4.如何理解 Python 的 Descriptor?

5.简明Python魔法 - 1

6.简明Python魔法 - 2

7.详解Python中 __get__和__getattr__和__getattribute__的区别

8.定制类

9.Python 的 type 和 object 之间是怎么一种关系?

 

下面的几段代码为什么能够正确运行,运行时都发生了些什么???

class MyInt(int):
    def __init__(self, v):
        pass
    def square(self):
        return self * self

def hello():
    print hello

n = MyInt(2)
print n.__dict__
print MyInt.__dict__
n.hello = hello
n.hello()
print n.__dict__
import types
class Log(object):
    def __init__(self, f):
        self.f = f
    def __get__(self,obj,cls):
        print self.f.__name__, called
        return types.MethodType(self.f, obj, cls)

class C(object):
    @Log
    def f(self):
        pass
c = C()
c.f()
class C1(object):
    a = abc
    def __getattribute__(self, *args, **kwargs):
        print("__getattribute__() is called")
        return object.__getattribute__(self, *args, **kwargs)

    def __getattr__(self, name):
        print("__getattr__ is called")
        return name + "from getattr"

    def __get__(self, instance, owner):
        print("__get__() is called", instance, owner)
        return self

    def foo(self, x):
        print(x)

class C2(object):
    d = C1()

if __name__ == "__main__":
    c = C1()
    c2 = C2()
    print "====="
    print(c.a)
    print "------"
    print(c.zzzz)
    print "------"
    c2.d
    print "------"
    print(c2.d.a)

 

以上是关于python类(资料+疑惑)的主要内容,如果未能解决你的问题,请参考以下文章

Python编程中,按回车实现换行的疑惑。

Python类OOPs概念[重复]

新手学Python一定很疑惑自学Python入门要买什么书容易上手?

新手学python疑惑—— 列表内容的复制

985大学的高材生只会写代码片段,丢人吗?

985高校的高材生只会写代码片段,丢人吗?