在本文中,您将会了解到关于pythonclass的属性的新资讯,同时我们还将为您解释python__class__属性的相关在本文中,我们将带你探索pythonclass的属性的奥秘,分析python
在本文中,您将会了解到关于python class 的属性的新资讯,同时我们还将为您解释python __class__属性的相关在本文中,我们将带你探索python class 的属性的奥秘,分析python __class__属性的特点,并给出一些关于django classonlymethod和python classmethod有什么区别?、python - class类 (二) 静态属性/类方法/静态方法、python - class类 (五) 继承补充-子类继承父类属性/函数方法、Python / tkinter / classes - 对象没有属性“tk”的实用技巧。
本文目录一览:- python class 的属性(python __class__属性)
- django classonlymethod和python classmethod有什么区别?
- python - class类 (二) 静态属性/类方法/静态方法
- python - class类 (五) 继承补充-子类继承父类属性/函数方法
- Python / tkinter / classes - 对象没有属性“tk”
python class 的属性(python __class__属性)
Class 有一些特殊的属性,便于我们获得一些额外的信息。>>> class Class1(object):
"""Class1 Doc."""
def __init__(self):
self.i = 1234
>>> Class1.__doc__ # 类型帮助信息
''Class1 Doc.''
>>> Class1.__name__ # 类型名称
''Class1''
>>> Class1.__module__ # 类型所在模块
''__main__''
>>> Class1.__bases__ # 类型所继承的基类
(<type ''object''>,)
>>> Class1.__dict__ # 类型字典,存储所有类型成员信息。
<dictproxy object at 0x00D3AD70>
>>> Class1().__class__ # 类型
<class ''__main__.Class1''>
>>> Class1().__module__ # 实例类型所在模块
''__main__''
>>> Class1().__dict__ # 对象字典,存储所有实例成员信息。
{''i'': 1234}
成员
Python Class 同样包含类型和实例两种成员。
>>> class Class1:
i = 123 # Class Field
def __init__(self):
self.i = 12345 # Instance Field
>>> print Class1.i
123
>>> print Class1().i
12345
django classonlymethod和python classmethod有什么区别?
为什么Django需要引入装饰器classonlymethod
?为什么它不能重用python classmethod
?
python - class类 (二) 静态属性/类方法/静态方法
静态属性:
#静态属性 = 数据属性 (@property)
class mianji():
def __init__(self,x,y):
self.x = x
self.y = y
#类的函数方法:
def mj(self):
z = self.x * self.y
return z
#类的函数方法+@property
@property
def mj2(self):
z = self.x * self.y
return z
abc = mianji(10,10)
print("类的属性",abc.x)
print(''这是mj第一个输出:'',abc.mj)
print(''这是mj第二个输出:'',abc.mj())
print("*"*10)
print(''这是mj2第一个输出:'',abc.mj2)
print(''这是mj2第二个输出:'',abc.mj2())
# @在一个函数前加了 @property 后,被修饰的函数转为了类的一个属性,
# 所以在调用的时候不要加括号了.
类方法:
#类方法 (@classmethod)
class leifangfa():
name = ''AA''
def __init__(self,name):
self.name = name
#未修饰的类函数方法
def ff(self):
print(self.name)
#修饰的类函数方法
@classmethod
def ff2(cls):
print(cls.name)
#当类调用自己的方法时,会报错(需要传递self参数)
# leifangfa.ff()
#那怎么样类能够调用自己的方法而不报错呢?
leifangfa.ff2()
#当然实例化后,实例调用这个修饰的函数方法时也只跟类方法有关,跟实例无关
abc = leifangfa("anec")
#实例调用类的方法
abc.ff2()
静态方法:
#静态方法(staticmethod)
#名义上归属类管理,不能使用类变量和实例变量,是类的工具包
class jingtaifangfa():
x = 1
def __init__(self,name):
self.name = name
@staticmethod
def jtff(x,y):
z = x * y
return z
#类调用静态方法:
print(jingtaifangfa.jtff(2, 2))
#实例调用静态方法:
abc = jingtaifangfa("anec")
print(abc.jtff(2, 2))
#静态方法相当于剥离与类属性、方法的绑定,单独可以被类和实例调用.
# 拓展:
#当类方法不被修饰为静态方法时:
class jingtaifangfa():
x = 1
def __init__(self,name):
self.name = name
def jtff(x,y):
z = x * y
return z
#类能调用这个函数方法:
print(jingtaifangfa.jtff(2, 2))
#实例是不能调用这个函数方法的
abc = jingtaifangfa("anec")
print(abc.jtff(2, 2))
python - class类 (五) 继承补充-子类继承父类属性/函数方法
子类继承父类属性/函数方法:
#方式一:(原生方式,不建议使用)
class Dongwu(object):
def __init__(self,name,sex,old):
self.name = name
self.sex = sex
self.old = old
def eat(self):
print("吃~~~~~~`")
class Cat(Dongwu):
def __init__(self,name,sex,old,num):
Dongwu.__init__(self,name,sex,old)
self.num = num
def eat(self):
Dongwu.eat(self)
return "疯狂的吃......"
wc = Cat("wc",''女'',4,''普通'')
print(wc.eat())
#这种方式一旦父类修改,子类的跟父类相关的所有属性都得修改!!!
# 方式二:(通过surper()方式继承父类的属性以及函数方法)
class Dongwu(object):
def __init__(self,name,sex,old):
self.name = name
self.sex = sex
self.old = old
def eat(self):
print("吃~~~~~~`")
class Cat(Dongwu):
def __init__(self,name,sex,old,num):
#不需要写父类名,也不要写self
super().__init__(name,sex,old)
self.num = num
def eat(self):
super().eat()
return "疯狂的吃!!!!"
wc = Cat("wc",''女'',4,''普通'')
print(wc.eat())
print(wc.__class__)
Python / tkinter / classes - 对象没有属性“tk”
如何解决Python / tkinter / classes - 对象没有属性“tk”?
本文底部的代码在 ttk Notebook 中创建了多个选项卡。当我用四行代码创建每个选项卡时,一切都很好:
edit_frame = ttk.Frame(workbench)
edit_frame.columnconfigure(0,weight=1)
edit_frame.rowconfigure(5,weight=1)
workbench.add(edit_frame,text='' Edit '')
我想减少重复并创建了 TabFrame 类。这会创建我想要的选项卡,但是一旦我尝试在选项卡中放置任何内容,就会抛出错误。 (如果我用注释掉的四行创建编辑选项卡,而不是创建 TabFrame 的实例,它工作正常。)
回溯是:
Traceback (most recent call last): File
"/home/pi/Desktop/VDDS/vdds_min.py",line 40,in <module>
edit_text_frame = ttk.Frame(edit_frame) File "/usr/lib/python3.7/tkinter/ttk.py",line 742,in __init__
Widget.__init__(self,master,"ttk::frame",kw) File "/usr/lib/python3.7/tkinter/ttk.py",line 559,in __init__
tkinter.Widget.__init__(self,widgetname,kw=kw) File "/usr/lib/python3.7/tkinter/__init__.py",line 2292,in __init__
BaseWidget._setup(self,cnf) File "/usr/lib/python3.7/tkinter/__init__.py",line 2262,in _setup
self.tk = master.tk AttributeError: ''TabFrame'' object has no attribute ''tk''
Thonny 助理说:
AttributeError: ''TabFrame'' object has no attribute ''tk'' __init__.py
line 2262 Your program tries to access attribute tk of an object of type ''TabFrame'',but this type doesn''t have such attribute.
并警告为:
Line 7 "self = ttk.Frame(notebook)": Invalid assignment to self in method
我对 Python 很陌生,现在完全不知道这些错误消息告诉我什么。
import tkinter as tk
from tkinter import ttk
class TabFrame:
"""a frame used in each tab of the root """
def __init__(self,notebook,text):
self = ttk.Frame(notebook)
self.columnconfigure(0,weight=1)
self.rowconfigure(5,weight=1)
notebook.add(self,text= text)
root = tk.Tk()
# configure root
root.title(''Voltmace Database development system'')
root.geometry(''800x600+300+300'')
root.columnconfigure(0,weight=1)
root.rowconfigure(0,weight=1)
root.configure(bg=''#888'')
# create Notebook
workbench = ttk.Notebook(root)
workbench.grid(sticky=tk.N + tk.E + tk.W + tk.S,padx=5,pady=5)
workbench.enable_traversal()
# Create tabs
edit_frame = TabFrame(workbench,'' EDIT '' )
# edit_frame = ttk.Frame(workbench)
# edit_frame.columnconfigure(0,weight=1)
# edit_frame.rowconfigure(5,weight=1)
# workbench.add(edit_frame,text='' Edit '')
assemble_frame = TabFrame(workbench,'' ASSEMBLE '' )
dump_frame = TabFrame(workbench,'' DUMP '' )
debug_frame = TabFrame(workbench,'' DEBUG '' )
help_frame = TabFrame(workbench,'' HELP '' )
# EDIT tab
edit_text_frame = ttk.Frame(edit_frame)
edit_text_frame.columnconfigure(1,weight=1)
edit_text_frame.grid(sticky=''ew'')
ttk.Label(edit_text_frame,text=''This feature is not yet
implemented.'').grid(sticky=''we'',pady=5)
root.mainloop()
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
我们今天的关于python class 的属性和python __class__属性的分享就到这里,谢谢您的阅读,如果想了解更多关于django classonlymethod和python classmethod有什么区别?、python - class类 (二) 静态属性/类方法/静态方法、python - class类 (五) 继承补充-子类继承父类属性/函数方法、Python / tkinter / classes - 对象没有属性“tk”的相关信息,可以在本站进行搜索。
本文标签: