remove pythonize
This commit is contained in:
parent
754bec4b55
commit
c32ae4ba0b
@ -1,82 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from inflection import camelize
|
||||
|
||||
|
||||
class Pythonic:
|
||||
def __getattribute__(self, name):
|
||||
# Don't touch magic methods
|
||||
if "__" in name:
|
||||
return object.__getattribute__(self, name)
|
||||
|
||||
# If class has a setter named "set" + CamelCased name,
|
||||
# assume attribute has a getter named camelCased name
|
||||
try:
|
||||
object.__getattribute__(self, "set" + camelize(name)) # setter
|
||||
getter = object.__getattribute__(self, camelize(name, False))
|
||||
except AttributeError:
|
||||
try:
|
||||
# Try camelCased attribute
|
||||
return object.__getattribute__(self, camelize(name, False))
|
||||
except AttributeError:
|
||||
# Else return attribute
|
||||
return object.__getattribute__(self, name)
|
||||
else:
|
||||
return getter()
|
||||
|
||||
def __setattr__(self, name, value):
|
||||
# Use setter if exists
|
||||
try:
|
||||
setter = object.__getattribute__(self, "set" + camelize(name))
|
||||
except AttributeError:
|
||||
# Try setting camelCased attribute
|
||||
try:
|
||||
object.__setattr__(self, camelize(name, False))
|
||||
except AttributeError:
|
||||
# Else set attribute
|
||||
object.__setattr__(self, name)
|
||||
else:
|
||||
setter(value)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Test
|
||||
|
||||
from PyQt5 import QtWidgets, QtCore
|
||||
|
||||
|
||||
class Point(QtCore.QPoint, Pythonic):
|
||||
pass
|
||||
|
||||
|
||||
p = Point(0, 0)
|
||||
p.x = 9
|
||||
p.y = 3
|
||||
assert p == Point(9, 3)
|
||||
|
||||
|
||||
|
||||
class Window(QtWidgets.QWidget, Pythonic):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.window_title = "I'm pythonic!"
|
||||
self.geometry = QtCore.QRect(300, 300, 400, 300)
|
||||
self.layout = HBoxLayout()
|
||||
self.layout << PushButton()
|
||||
|
||||
|
||||
class HBoxLayout(QtWidgets.QHBoxLayout, Pythonic):
|
||||
def __lshift__(self, widget):
|
||||
self.add_widget(widget)
|
||||
|
||||
|
||||
class PushButton(QtWidgets.QPushButton, Pythonic):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.text = "Click me!"
|
||||
|
||||
|
||||
app = QtWidgets.QApplication([])
|
||||
win = Window()
|
||||
win.show()
|
||||
app.exec_()
|
||||
|
Loading…
x
Reference in New Issue
Block a user