Python 3 繫結方法與非繫結方法

2021-10-16 08:41:15 字數 2671 閱讀 3505

一、繫結方法:繫結給誰,就應該由誰來呼叫,誰來呼叫就會把呼叫者當作第乙個引數自動傳入。

繫結到物件的方法:在類內定義的沒有被任何裝飾器修飾的。

繫結到類的方法:在類內定義的被裝飾器classmethod修飾的方法。

二、非繫結方法:沒有自動傳值這麼一說了,就類中定義的乙個普通工具,物件和類都可以使用。

非繫結方法:不與類或者物件繫結。

物件方法:不需要裝飾器;需要繫結方法。

類方法:需要裝飾器classmethod,需要繫結方法。

靜態方法:需要裝飾器staticmethod,不需要繫結方法。

示例:

class foo:

def __init__(self, name):

self.name = name

def tell(self):

print('名字是%s' % self.name)

@classmethod

def func(cls): # cls=foo

print(cls)

@staticmethod

def func1(x, y):

print(x + y)

f = foo('winnie')

print(f.tell) # >

f.tell()

print(foo.func) # >

foo.func()

print(foo.func1) # print(f.func1) # foo.func1(1, 2)

f.func1(1, 3)

結果:>

名字是winnie

>

34

應用:

class people:

def __init__(self, name, age, ***):

self.name = name

self.age = age

self.*** = ***

def tell_info(self):

print('name:%s age:%s ***:%s' % (self.name, self.age, self.***))

p = people('winnie', 18, 'female')

p.tell_info()

另一種方式建立例項

import settings

class people:

def __init__(self, name, age, ***):

self.name = name

self.age = age

self.*** = ***

def tell_info(self):

print('name:%s age:%s ***:%s' % (self.name, self.age, self.***))

@classmethod

def from_conf(cls):

obj = cls(

settings.name,

settings.age,

settings.***

)return obj

p = people.from_conf()

p.tell_info()

settings.py檔案

name='winnie'

age=18

***='female'

import hashlib

import time

import settings

class people:

def __init__(self, name, age, ***):

self.id = self.create_id()

self.name = name

self.age = age

self.*** = ***

def tell_info(self):

print('name:%s age:%s ***:%s' % (self.name, self.age, self.***))

@classmethod

def from_conf(cls):

obj = cls(

settings.name,

settings.age,

settings.***

)return obj

@staticmethod

def create_id():

m = hashlib.md5(str(time.time()).encode('utf-8'))

return m.hexdigest()

p1 = people('winnie', 18, 'male')

p2 = people('allen', 28, 'male')

p3 = people('vivian', 38, 'male')

print(p1.id)

print(p2.id)

print(p3.id)

結果:2743f0286bb2711c930bbf6bb353a51f

81f132a5334db7b561fd3ea81c290e11

81f132a5334db7b561fd3ea81c290e11

Python教程 繫結方法與非繫結方法

一 繫結方法 1.物件的繫結方法 首先我們明確乙個知識點,凡是類中的方法或函式,預設情況下都是繫結給物件使用的。下面,我們通過例項,來慢慢解析繫結方法的應用。class people def init self,name,age self.name name self.age age deftalk...

繫結方法與非繫結方法

特性 繫結給誰就應該由誰來呼叫,誰來呼叫就會將誰當作第乙個引數自動傳入 精髓在於自動傳值 繫結方法分為兩類 1.1 繫結給物件方法 在類內部定義的函式 沒有被任何裝飾器修飾的 預設就是繫結給物件用的 1.2 繫結給類的方法 在類內部定義的函式如果被裝飾器 classmethod裝飾,那麼則是繫結給類...

python類的繫結方法與非繫結方法

一 繫結方法 首先我們明確乙個知識點,凡是類中的方法或函式,預設情況下都是繫結給物件使用的。下面,我們通過例項,來慢慢解析繫結方法的應用。class people def init self,name,age self.name name self.age age deftalk self pass...